Wektor normalny

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Konstrukcja wektora normalnego do powierzchni

Wektor normalny jest to wektor prostopadły do płaszczyzny, lub w wypadku innych powierzchni prostopadły do płaszczyzny stycznej do powierzchni w danym punkcie. Pojęcie to używane jest w matematyce, fizyce, biologii molekularnej, grafice 3D.

W grafice komputerowej[edytuj | edytuj kod]

Wektor normalny oznacza wektor prostopadły do powierzchni obiektu trójwymiarowego w danym punkcie. Niekoniecznie musi on być równoległy do normalnej do uśrednionej (wygładzonej) powierzchni (zobacz: mapowanie wypukłości).

Każdy wektor wyznacza kierunek, dlatego w grafice komputerowej wektor normalny określa stronę powierzchni. Rozróżnia się „przód” (ang. face) i „tył” (ang. back). To rozróżnienie stosuje się m.in. do ukrywania powierzchni niewidocznych – w j. ang. metoda ta nazywa się backface culling i polega na niewyświetlaniu tych powierzchni, które są zwrócone „tyłem” do obserwatora, co pozwala w statystycznej scenie wyeliminować spory odsetek niewidocznych powierzchni.

Jeśli obiekty są reprezentowane jako siatka wielokątów, stosuje się technikę wygładzania przy użyciu wektorów normalnych. Dla każdego wierzchołka wyznacza się wektor normalny, który jest geometryczną sumą wektorów normalnych wielokątów, do których należy dany wierzchołek. Następnie przy oświetleniu wielokątów nie bierze się ich własnych wektorów normalnych, ale wyznacza wektor normalny poprzez interpolację wektorów z wierzchołków. Powoduje to powstanie złudzenia gładkości powierzchni.

Jeśli dana płaszczyzna opisana jest w postaci parametrycznej przy pomocy dwóch niezależnych od siebie rzeczywistych parametrów t_1\, i t_2\,:

\begin{cases}\begin{matrix}
x=x(t_1,t_2)\\
y=y(t_1,t_2)\\
z=z(t_1,t_2)
\end{matrix}\end{cases},

wówczas wektory styczne do tej powierzchni, różniczkując kolejno po t_1\, i t_2\,, wyrażają się odpowiednio:

\mathbf {\overrightarrow{v_1}} = \begin{bmatrix} \frac{\delta x}{\delta t_1}, & \frac{\delta y}{\delta t_1}, & \frac{\delta z}{\delta t_1} \end{bmatrix}
\mathbf {\overrightarrow{v_2}} = \begin{bmatrix} \frac{\delta x}{\delta t_2}, & \frac{\delta y}{\delta t_2}, & \frac{\delta z}{\delta t_2} \end{bmatrix}

Następnie wyznaczamy iloczyn wektorowy powyższych dwóch wektorów, który jest jednocześnie szukanym wektorem normalnym:

\overrightarrow{v_1}\times \overrightarrow{v_2}=\left|\begin{array}{ccc}
\overrightarrow{i} & \overrightarrow{j} & \overrightarrow{k}\\
\frac {\delta x}{\delta t_1} & \frac {\delta y}{\delta t_1} & \frac {\delta z}{\delta t_1}\\
\frac {\delta x}{\delta t_2} & \frac {\delta y}{\delta t_2} & \frac {\delta z}{\delta t_2}
\end{array}\right|

Ostatecznie więc wektor normalny do naszej powierzchni dla danych parametrów t_1\, i t_2\,, czyli w punkcie (x,y,z)\,, wyraża się wzorem:

\mathbf {\overrightarrow{n}} = \begin{bmatrix} \lambda\left|\begin{array}{ccc}
\frac {\delta y}{\delta t_1} & \frac {\delta z}{\delta t_1}\\
\frac {\delta y}{\delta t_2} & \frac {\delta z}{\delta t_2}
\end{array}\right|, & -\lambda\left|\begin{array}{ccc}
\frac {\delta x}{\delta t_1} & \frac {\delta z}{\delta t_1}\\
\frac {\delta x}{\delta t_2} & \frac {\delta z}{\delta t_2}
\end{array}\right|, & \lambda\left|\begin{array}{ccc}
\frac {\delta x}{\delta t_1} & \frac {\delta y}{\delta t_1}\\
\frac {\delta x}{\delta t_2} & \frac {\delta y}{\delta t_2}
\end{array}\right| \end{bmatrix};\;\;\;\lambda \in \mathbb R \setminus \{0\}

Jeżeli powierzchnia opisana jest funkcją y=f(x,z)\,, to wtedy zmienne x\, i z\, traktujemy jako parametry, odpowiednio t_1\, i t_2\,:

\left\{\begin{array}{l} x=t_1 \\ y=y(t_1,t_2)=f(x,z) \\ z=t_2 \end{array}\right.

Po odpowiednich podstawieniach otrzymujemy szukany wektor normalny:

\mathbf {\overrightarrow{n}} = \begin{bmatrix} \lambda \cdot \frac{\delta y}{\delta x}, & -\lambda, & \lambda \cdot \frac{\delta y}{\delta z} \end{bmatrix};\;\;\;\lambda \in \mathbb R \setminus \{0\}

Wektory normalne niektórych powierzchni[edytuj | edytuj kod]

  • Płaszczyzna \Pi\, o równaniu ogólnym ax+by+cz+d=0\, w dowolnym punkcie (x,y,z) \in \Pi\,:
\mathbf {\overrightarrow{n}} = \begin{bmatrix} \lambda a, & \lambda b, & \lambda c \end{bmatrix} = const;\;\;\;\lambda \in \mathbb R \setminus \{0\}
  • Sfera kuli \Pi\, o równaniu ogólnym (x-x_0)^2+(y-y_0)^2+(z-z_0)^2=R^2\, w punkcie (x,y,z) \in \Pi\,:
\mathbf {\overrightarrow{n}} = \begin{bmatrix} \lambda (x-x_0), & \lambda (y-y_0), & \lambda (z-z_0) \end{bmatrix};\;\;\;\lambda \in \mathbb R \setminus \{0\}
  • Powierzchnia elipsoidy \Pi\, o równaniu ogólnym (\frac {x-x_0}{a})^2+(\frac {y-y_0}{b})^2+(\frac {z-z_0}{c})^2=1\, w punkcie (x,y,z) \in \Pi\,:
\mathbf {\overrightarrow{n}} = \begin{bmatrix} \lambda \cdot \frac {x-x_0}{a^2}, & \lambda \cdot \frac {y-y_0}{b^2}, & \lambda \cdot \frac {z-z_0}{c^2} \end{bmatrix};\;\;\;\lambda \in \mathbb R \setminus \{0\}


Zobacz też[edytuj | edytuj kod]