Berechnen einer Oberflächennormalen
Für ein konvexes Polygon (z.B. ein Dreieck), kann eine Flächennormale als Vektor-Kreuzprodukt zweier (nicht paralleler) Kanten des Polygons berechnet werden.
Für eine Ebene, die durch die Gleichung a x + b y + c z + d = 0 {\displaystyle ax+by+cz+d=0}
, der Vektor n = ( a , b , c ) {\displaystyle \mathbf {n} =(a,b,c)}
ist eine Normale.
Für eine Ebene, deren Gleichung in parametrischer Form gegeben ist
r ( s , t ) = r 0 + s p + t q {\displaystyle \mathbf {r} (s,t)=\mathbf {r} _{0}+s\mathbf {p} +t\mathbf {q} }
,
wobei r0 ein Punkt auf der Ebene ist und p, q nicht-parallele Vektoren sind, die entlang der Ebene zeigen, eine Normale auf die Ebene ist ein Vektor, der sowohl auf p als auch auf q normal ist, was als das Kreuzprodukt n = p × q gefunden werden kann {\displaystyle \mathbf {n} =\mathbf {p} × \mathbf {q} }
.
Wenn eine (möglicherweise nicht ebene) Fläche S im 3-Raum R3 durch ein System krummliniger Koordinaten r(s, t) = (x(s,t), y(s,t), z(s,t)) parametrisiert ist, wobei s und t reelle Variablen sind, dann ist eine Normale auf S per Definition eine Normale auf eine Tangentialebene, gegeben durch das Kreuzprodukt der partiellen Ableitungen
n = ∂ r ∂ s × ∂ r ∂ t . {\displaystyle \mathbf {n} ={\frac {\partial \mathbf {r} }{\partial s}}\mal {\frac {\partial \mathbf {r} }{partial t}}.}
Wenn eine Fläche S implizit als die Menge der Punkte ( x , y , z ) gegeben ist {\displaystyle (x,y,z)}
befriedigt F ( x , y , z ) = 0 {\displaystyle F(x,y,z)=0}
, dann eine Normale an einem Punkt ( x , y , z ) {\displaystyle (x,y,z)}
auf der Fläche durch den Gradienten n = ∇ F ( x , y , z ) gegeben. n = ∇ F ( x , y , z ) .
Da die Steigung in jedem Punkt senkrecht auf der Ebenenmenge S steht,
Für eine Fläche S in R3, gegeben als Graph einer Funktion z = f ( x , y ) {\displaystyle z=f(x,y)}
, kann eine nach oben weisende Normale entweder aus der Parametrisierung r ( x , y ) = ( x , y , f ( x , y ) ) {\displaystyle \mathbf {r} (x,y)=(x,y,f(x,y))}
, mit n = ∂ r ∂ x × ∂ r ∂ y = ( 1 , 0 , ∂ f ∂ x ) × ( 0 , 1 , ∂ f ∂ y ) = ( – ∂ f ∂ x , – ∂ f ∂ y , 1 ) ; {\displaystyle \mathbf {n} ={\frac {\partial \mathbf {r} }{\partial x}}\mal {\frac {\partial \mathbf {r} }{\partial y}}=(1,0,{\tfrac {\partial f}{\partial x}})\times (0,1,{\tfrac {\partial f}{\partial y}})=(-{\tfrac {\partial f}{\partial x}},-{\tfrac {\partial f}{\partial y}},1);}
oder einfacher aus seiner impliziten Form F ( x , y , z ) = z – f ( x , y ) = 0 {\displaystyle F(x,y,z)=z-f(x,y)=0}
, ergibt n = ∇ F ( x , y , z ) = ( – ∂ f ∂ x , – ∂ f ∂ y , 1 ) {\displaystyle \mathbf {n} =\nabla F(x,y,z)=(-{\tfrac {\partial f}{\partial x}},-{\tfrac {\partial f}{\partial y}},1)}
. Da eine Fläche an einem singulären Punkt keine Tangentialebene hat, hat sie an diesem Punkt keine wohldefinierte Normale: z. B. den Scheitelpunkt eines Kegels. Im Allgemeinen ist es möglich, für eine Fläche, die Lipschitz-kontinuierlich ist, fast überall eine Normale zu definieren.
Wahl der NormalenBearbeiten
Die Normale zu einer (Hyper-)Oberfläche ist normalerweise so skaliert, dass sie eine Einheitslänge hat, aber sie hat keine eindeutige Richtung, da ihr Gegenteil ebenfalls eine Einheitsnormale ist. Für eine Fläche, die den topologischen Rand einer Menge in drei Dimensionen darstellt, kann man zwischen der nach innen zeigenden Normalen und der nach außen zeigenden Normalen unterscheiden. Für eine orientierte Fläche wird die Normale üblicherweise durch die Rechte-Hand-Regel oder ihr Analogon in höheren Dimensionen bestimmt.
Wenn die Normale als Kreuzprodukt von Tangentenvektoren konstruiert wird (wie im Text oben beschrieben), ist sie ein Pseudovektor.
Transformation von NormalenBearbeiten
Hinweis: In diesem Abschnitt verwenden wir nur die obere 3×3-Matrix, da die Translation für die Berechnung irrelevant ist
Bei der Anwendung einer Transformation auf eine Fläche ist es oft sinnvoll, die Normalen für die resultierende Fläche aus den ursprünglichen Normalen abzuleiten.
Gegeben eine 3×3-Transformationsmatrix M, können wir die Matrix W, die einen Vektor n senkrecht zur Tangentialebene t in einen Vektor n′ senkrecht zur transformierten Tangentialebene M t transformiert, mit folgender Logik bestimmen:
Schreiben Sie n′ als W n. Wir müssen W finden.
W n senkrecht zu M t {\displaystyle W\mathbb {n} {\text{senkrecht zu }}M\mathbb {t} }
⟺ ( W n ) ⋅ ( M t ) = 0 {\displaystyle \iff (W\mathbb {n} )\cdot (M\mathbb {t} )=0}
⟺ ( W n ) T ( M t ) = 0 {\displaystyle \iff (W\mathbb {n} )^{\mathrm {T} }(M\mathbb {t} )=0}
⟺ ( n T W T ) ( M t ) = 0 {\displaystyle \iff (\mathbb {n} ^{\mathrm {T} }W^{\mathrm {T} })(M\mathbb {t} )=0}
⟺ n T ( W T M ) t = 0 {\displaystyle \iff \mathbb {n} ^{\mathrm {T} }(W^{\mathrm {T} }M)\mathbb {t} =0}
Einfach W so wählen, dass W T M = I {\displaystyle W^{\mathrm {T} }M=I}
, oder W = ( M – 1 ) T {\displaystyle W=(M^{-1})^{\mathrm {T} }}
, wird die obige Gleichung erfüllen, so dass sich ein W n {\displaystyle W\mathbb {n} }
senkrecht zu M t {\displaystyle M\mathbb {t} }
, oder ein n′ senkrecht zu t′, je nach Bedarf.
Daher sollte man bei der Transformation von Oberflächennormalen die inverse Transponierung der linearen Transformation verwenden. Die inverse Transponierte ist gleich der Originalmatrix, wenn die Matrix orthonormal ist, d. h. rein rotatorisch ohne Skalierung oder Scherung.