Béziertrekant

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg

En kubisk Béziertrekant er en flade med ligningen

(\alpha s+\beta t+\gamma u)^3\ \ \ |\ 0 \le s \le 1,\ \ \ 0 \le t \le 1,\ \ \ 0 \le u \le 1,\ \ \ s+t+u=1
=\begin{matrix}
  &  &  & \ \ \boldsymbol{\beta\!^3}\ t^3 &  &  &  \\
  &  &  &  &  &  &  \\
  &  & +\ 3\boldsymbol{\alpha\!\beta\!^2}\ st^2 &  & +\ 3\boldsymbol{\beta\!^2\!\gamma}\ t^2 u &  &  \\
  &  &  &  &  &  &  \\
  & +\ 3\boldsymbol{\alpha\!^2\!\beta}\ s^2 t &  & +\ 6\boldsymbol{\alpha\!\beta\!\gamma}\ stu &  & +\ 3\boldsymbol{\beta\!\gamma\!^2}\ tu^2 &  \\
  &  &  &  &  &  &  \\
 +\ \boldsymbol{\alpha\!^3}\ s^3\ &  & +\ 3\boldsymbol{\alpha\!^2\!\gamma}\ s^2 u &  & +\ 3\boldsymbol{\alpha\!\gamma\!^2}\ su^2 &  & +\ \boldsymbol{\gamma\!^3}\ u^3
\end{matrix}

hvor α3, β3, γ3, α²β, αβ², β²γ, βγ², αγ², α²γ og αβγ er trekantens kontrolpunkter.

En Béziertrekant med markerede kontrolpunkter
En Béziertrekant med markerede kontrolpunkter

Trekantens hjørner er punkterne α3, β3 and γ3. Trekantens sider er selv bézierkurver, med de samme kontrolpunkter som béziertrekanten.

Det er også muligt at skabe andengrads eller andre grader af béziertrekanter, ved at ændre eksponenten i den oprindelige ligning, som bevirker at der vil være flere eller færre kontrolpunkter. Med eksponenten 1, er den resulterende béziertrekant en regulær flad trekant. I alle tilfælde vil trekantens sider være bézierkurver af samme grad.

På grund af ligningens natur vil hele trekanterne være afgrænset inden for volumenet omringet af kontrolpunkterne, og affine transformationer af kontrolpunkterne vil korrekt transformere hele trekanten på samme måde.

En fordel ved béziertrekanter i computergrafik er, de er glatte, og nemt kan approksimeres af regulære trekanter, ved rekursiv deling af beziertrekanten i to separate béziertrekante, indtil de betragtes som tilpas små, udelukkende ved brug af at lægge sammen og ved division med to, uden brug for flydende punkts-matematik overhovedet.

  • Følgende beregner de nye kontrolpunkter for den halvdel af béziertrekanten med hjørnet α3, hjørnet halvvejs på bézierkurven mellem α3 and β3, og det sidste hjørne γ3.

\begin{vmatrix}
\boldsymbol{\alpha\!^3}'\\
\boldsymbol{\alpha\!^2\!\beta}'\\
\boldsymbol{\alpha\!\beta\!^2}'\\
\boldsymbol{\beta\!^3}'\\
\boldsymbol{\alpha\!^2\!\gamma}'\\
\boldsymbol{\alpha\!\beta\!\gamma}'\\
\boldsymbol{\beta\!^2\!\gamma}'\\
\boldsymbol{\alpha\!\gamma\!^2}'\\
\boldsymbol{\beta\!\gamma\!^2}'\\
\boldsymbol{\gamma\!^3}'
\end{vmatrix}=\begin{vmatrix}
1&0&0&0&0&0&0&0&0&0\\
{1\over 2}&{1\over 2}&0&0&0&0&0&0&0&0\\
{1\over 4}&{2\over 4}&{1\over 4}&0&0&0&0&0&0&0\\
{1\over 8}&{3\over 8}&{3\over 8}&{1\over 8}&0&0&0&0&0&0\\
0&0&0&0&1&0&0&0&0&0\\
0&0&0&0&{1\over 2}&{1\over 2}&0&0&0&0\\
0&0&0&0&{1\over 4}&{2\over 4}&{1\over 4}&0&0&0\\
0&0&0&0&0&0&0&1&0&0\\
0&0&0&0&0&0&0&{1\over 2}&{1\over 2}&0\\
0&0&0&0&0&0&0&0&0&1
\end{vmatrix}\cdot\begin{vmatrix}
\boldsymbol{\alpha\!^3}\\
\boldsymbol{\alpha\!^2\!\beta}\\
\boldsymbol{\alpha\!\beta\!^2}\\
\boldsymbol{\beta\!^3}\\
\boldsymbol{\alpha\!^2\!\gamma}\\
\boldsymbol{\alpha\!\beta\!\gamma}\\
\boldsymbol{\beta\!^2\!\gamma}\\
\boldsymbol{\alpha\!\gamma\!^2}\\
\boldsymbol{\beta\!\gamma\!^2}\\
\boldsymbol{\gamma\!^3}
\end{vmatrix}
ensbetydende, men udelukket ved brug af at lægge sammen og division med to,
        β3:=(αβ²+β3)/2
    αβ²:=(α²β+αβ²)/2   β3:=(αβ²+β3)/2
α²β:=(α3+α²β)/2   αβ²:=(α²β+αβ²)/2   β3:=(αβ²+β3)/2
    α²γ:=(αβγ+α²γ)/2
αβγ:=(β²γ+αβγ)/2   α²γ:=(αβγ+α²γ)/2
αγ²:=(βγ²+αγ²)/2
hvor := betyder at erstatte vektoren på venstre side med vektoren på højre side.
Bemærk at halvering af béziertrekanten ligner halvering af bézierkurver af alle grader op til graden af béziertrekanten.

Se også[redigér | redigér wikikode]