Calcul d’une normale à la surfaceEdit
Pour un polygone convexe (tel qu’un triangle), une normale à la surface peut être calculée comme le produit vectoriel croisé de deux arêtes (non parallèles) du polygone.
Pour un plan donné par l’équation a x + b y + c z + d = 0 {\displaystyle ax+by+cz+d=0}.
, le vecteur n = ( a , b , c ) {\displaystyle \mathbf {n} =(a,b,c)}
est une normale.
Pour un plan dont l’équation est donnée sous forme paramétrique
r ( s , t ) = r 0 + s p + t q {\displaystyle \mathbf {r} (s,t)=\mathbf {r} _{0}+s\mathbf {p} +t\mathbf {q} }
,
où r0 est un point du plan et p, q sont des vecteurs non parallèles pointant le long du plan, une normale au plan est un vecteur normal à la fois à p et à q, qui peut être trouvé comme le produit croisé n = p × q {\displaystyle \mathbf {n} =\mathbf {p} \times \mathbf {q} }
.
Si une surface S (éventuellement non plane) dans l’espace R3 est paramétrée par un système de coordonnées curvilignes r(s, t) = (x(s,t), y(s,t), z(s,t)), avec s et t variables réelles, alors une normale à S est par définition une normale à un plan tangent, donnée par le produit en croix des dérivées partielles
n = ∂ r ∂ s × ∂ r ∂ t . {\displaystyle \mathbf {n} ={\frac {\partial \mathbf {r} {{\partial s}}\times {\frac {\partial \mathbf {r} {{\partial t}}.}
Si une surface S est donnée implicitement comme l’ensemble des points ( x , y , z ) {\displaystyle (x,y,z)}.
satisfaisant F ( x , y , z ) = 0 {\displaystyle F(x,y,z)=0}
, alors une normale à un point ( x , y , z ) {\displaystyle (x,y,z)}
sur la surface est donnée par le gradient n = ∇ F ( x , y , z ) . {\displaystyle \mathbf {n} =\nabla F(x,y,z).}
puisque le gradient en tout point est perpendiculaire à l’ensemble des niveaux S.
Pour une surface S dans R3 donnée comme le graphe d’une fonction z = f ( x , y ) {\displaystyle z=f(x,y)}
, une normale orientée vers le haut peut être trouvée soit à partir de la paramétrisation r ( x , y ) = ( x , y , f ( x , y ) ) {\displaystyle \mathbf {r} (x,y)=(x,y,f(x,y))}
, ce qui donne 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}}\times {\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) ;}
ou plus simplement de sa forme implicite F ( x , y , z ) = z – f ( x , y ) = 0 {\displaystyle F(x,y,z)=z-f(x,y)=0}.
, ce qui donne 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)}
. Comme une surface n’a pas de plan tangent en un point singulier, elle n’a pas de normale bien définie en ce point : par exemple, le sommet d’un cône. En général, il est possible de définir une normale presque partout pour une surface qui est continue de Lipschitz.
Choix de la normaleModifier
La normale à une (hyper)surface est généralement mise à l’échelle pour avoir une longueur unitaire, mais elle n’a pas une direction unique, puisque son opposé est aussi une normale unitaire. Pour une surface qui est la limite topologique d’un ensemble en trois dimensions, on peut distinguer la normale pointant vers l’intérieur et la normale pointant vers l’extérieur. Pour une surface orientée, la normale est généralement déterminée par la règle de la main droite ou son analogue en dimension supérieure.
Si la normale est construite comme le produit croisé de vecteurs tangents (comme décrit dans le texte ci-dessus), c’est un pseudo vecteur.
Transformation des normalesModification
Note : dans cette section, nous n’utilisons que la matrice supérieure 3×3, car la translation n’est pas pertinente pour le calcul
Lorsqu’on applique une transformation à une surface, il est souvent utile de dériver des normales pour la surface résultante à partir des normales originales.
Spécifiquement, étant donné une matrice de transformation 3×3 M, nous pouvons déterminer la matrice W qui transforme un vecteur n perpendiculaire au plan tangent t en un vecteur n′ perpendiculaire au plan tangent transformé M t, par la logique suivante :
Ecrire n′ comme W n. Nous devons trouver W.
W n perpendiculaire à M t {\displaystyle W\mathbb {n} {\text{ perpendiculaire à }}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}
Il est clair que choisir W tel que W T M = I {\displaystyle W^{\mathrm {T}} }M=I}
, ou W = ( M – 1 ) T {\displaystyle W=(M^{-1})^{\mathrm {T}} }}
, satisfera l’équation ci-dessus, donnant un W n {\displaystyle W\mathbb {n} }
perpendiculaire à M t {\displaystyle M\mathbb {t} }
, ou un n′ perpendiculaire à t′, selon le cas.
Par conséquent, il faut utiliser la transposée inverse de la transformation linéaire lors de la transformation des normales de surface. La transposée inverse est égale à la matrice d’origine si la matrice est orthonormée, c’est-à-dire purement rotationnelle, sans mise à l’échelle ni cisaillement.