Étape 2: courbe 3D
Nous devons maintenant prendre la grille de noeud et transformez-le en courbes 3D. Commençons par l’affectation d’un espace de coordonnées local pour notre grille de noeud.Alors maintenant, nous avons un (u, v) coordonnées pour chaque point dans notre grille. N’oubliez pas que le nœud entoure, donc un u 0 sera identique à un u de 1.
Maintenant, nous allons définir un cylindre de diamètre D et de hauteur h :
Si nous définissons l’axe z sur l’axe principal de la bouteille et mettre l’origine dans le centre du cylindre, nous pouvons cartographier nos (u, v) les coordonnées d’un point 3D avec les équations suivantes :
x = D/2*cos(360*u)
y = D/2*sin(360*u)
z =-h/2 *(1-v) + H/2 * v
Maintenant, nous promener dans notre grille, comme nous l’avons fait dans la première étape et déposez un point 3D en chaque point de grille en utilisant les équations ci-dessus. Nous pouvons alors connecter les points comme une courbe en utilisant une interpolation Catmull-Rom. Notez que dans l’image ci-dessous H a été défini à une valeur inférieure à la hauteur réelle de la bouteille, c’est pourquoi la courbe ne va pas complètement vers le haut et le bas.
Maintenant, nous avons besoin compenser les points pour tenir compte quand on donne l’épaisseur de la courbe ainsi que les overs et unders. Nous avons besoin compenser les points vers l’extérieur de la bouteille à chaque point de grille. Pour calculer la direction que nous avons besoin pour compenser, nous utilisons des équations très similaires à ci-dessus, sauf z sera toujours 0 et D est irrelevent car nous voulons un vecteur de longueur unité :
NX = cos(360*u) ;
NY = sin(360*u) ;
NZ = 0 ;
Après le décalage de la courbe, on obtient ce qui suit :