Courbes circulaires du 2e ordre

Comme vous le savez , les courbes de Bézier ne peuvent pas construire un arc de cercle ou une ellipse. Cet article décrit les courbes qui ne présentent pas cet inconvénient.







Courbes de BĂ©zier



La logique derriĂšre la construction des courbes de BĂ©zier est bien comprise Ă  partir de l'animation suivante:







Pour obtenir la formule directement à partir de la représentation graphique, il suffit de définir une fonction auxiliaire d'interpolation linéaire entre deux points, à laquelle, lorsque le paramÚtre t passe de 0 à 1, il renvoie des valeurs intermédiaires de a à b :



mix(a,b,t)=a(1−t)+bt

Remarque
- lerp, blend, mix - . .




Avec son aide, vous pouvez toujours trouver les points nécessaires - trouvez d'abord

ac=mix(a,c,t)

et

cb=mix(,b,t)



et puis Ă  travers eux trouver

d=mix(ac,cb,t)



Si vous le souhaitez, vous pouvez substituer les fonctions les unes aux autres et réduire - bien que cela ne simplifie pas particuliÚrement les calculs, cela vous permettra de généraliser les courbes à un nombre arbitraire de points de contrÎle (via les polynÎmes de Bernstein). Dans notre cas, nous obtenons



d=a(1−t)2+bt2+2ct(1−t)



L'augmentation de l'ordre des courbes est réalisée de maniÚre triviale - les points initiaux ne sont pas fixés constants, mais à la suite d'une interpolation entre n + 1 autres points de contrÎle:





Remarque
, . .


Courbes circulaires





Arc de cercle



Pour construire un arc de cercle de la mĂȘme maniĂšre, il est nĂ©cessaire de dĂ©terminer la logique de construction appropriĂ©e - par analogie avec le dessin d'un cercle avec une boussole.





Au dĂ©part, nous ne connaissons pas le centre du cercle d - il se trouve par l'intersection des perpendiculaires aux tangentes aux points a et b (ci-aprĂšs nodaux); les tangentes elles-mĂȘmes sont spĂ©cifiĂ©es au point c (ci-aprĂšs dĂ©nommĂ© la directive). Pour crĂ©er un arc de cercle arbitraire (moins de 180 °), il suffit que les distances du point directeur aux points nodaux soient les mĂȘmes.





Arc d'ellipse



Construire un arc d'ellipse est déjà plus difficile - vous avez besoin de deux vecteurs tournant dans des directions différentes ( plus de détails ici )





En utilisant la méthode ci-dessus pour trouver le point d , nous ne pouvons plus construire un arc arbitraire d'ellipse - seulement de 0 ° à 90 ° (y compris tourné d'un certain angle).



Arc hypotrochoĂŻde



En posant la condition qu'au début et à la fin du dessin les vecteurs doivent se trouver sur une ligne droite, nous obtenons l'arc de l' hypotrochoïde dans tous les autres cas. Cette condition n'est pas accidentelle et (outre la définition unique de la courbe) garantit la coïncidence des tangentes aux points nodaux. En conséquence, les chemins angulaires parcourus par les deux vecteurs seront différents, mais totalisent toujours 180 °.





L'animation suivante montre comment la forme de la courbe change en fonction de la position du point de repĂšre:







Algorithme



Comme nous avons ici des rotations sur un plan bidimensionnel, il est pratique de décrire les mathématiques de la construction de ces courbes en termes de nombres complexes.



1) trouver le point d'intersection des normales des tangentes tracées du point directeur aux points nodaux:



d=(2a−c)(c−b)a∗+(2b−c)(a−c)b∗−c(a−b)c∗(c−b)a∗+(a−c)b∗−(a−b)c∗

(ici l'astérisque signifie conjugaison complexe).



2) connaissant d , on trouve les longueurs des normales



rad=|a−d|

rbd=|b−d|





et leur somme et différence



rm=12(rad+rbd)

rs=12(rad−rbd)





3) trouver le vecteur unitaire Ă  partir duquel la construction commence



v=a−d|a−d|



Remarque
sign(x).





4) trouver les chemins angulaires que chacun des vecteurs doit passer



ϕm=arg⁥(a−db−d)

ϕs=arg⁥(−a−db−d)



Remarque
, — . — , . . .



, — , - ; .



. ,

arg⁡(a−d)−arg⁡(b−d)



— - .


5) en changeant successivement t de 0 Ă  1 avec un certain pas, on trouve le point appartenant Ă  la courbe par la formule



d+v(rme−itϕm+rse−itϕs)





Splines circulaires



Tout comme les courbes de BĂ©zier, ces courbes peuvent ĂȘtre combinĂ©es pour crĂ©er des splines continues par morceaux. Pour garantir la fluiditĂ© des points d'ancrage (ancrage), le point d'ancrage doit ĂȘtre alignĂ© avec deux points directeurs adjacents. Pour ce faire, vous pouvez spĂ©cifier des points d'ancrage non explicitement, mais via l'interpolation des points directeurs. Ils ne peuvent pas non plus ĂȘtre rĂ©glĂ©s du tout, calculant de maniĂšre complĂštement automatique - par exemple, comme la moyenne entre les points de guidage: Ă 







droite, Ă  des fins de comparaison, la mĂȘme approche a Ă©tĂ© utilisĂ©e avec les courbes de BĂ©zier du 2Ăšme ordre.



Notes et nuances



Contrairement aux courbes de BĂ©zier, ici la courbe ne se situe pas toujours dans la forme des lignes reliant les points de contrĂŽle, par exemple





De plus, il existe un cas dĂ©gĂ©nĂ©rĂ© qui doit ĂȘtre traitĂ© sĂ©parĂ©ment - lorsque le point directeur se trouve sur la mĂȘme ligne que les points d'ancrage. Dans ce cas, la courbe dĂ©gĂ©nĂšre en une ligne droite et lors de la tentative de calcul du point d , une division par zĂ©ro se produit.



Ces courbes ont Ă©galement des restrictions sur la courbure de la ligne, car l'algorithme choisit le plus petit chemin Ă  suivre et la courbe ne peut pas faire plus de 180 °. Cela conduit au fait qu'avec une interpolation continue par morceaux, des angles vifs peuvent se produire Ă  une certaine position des points directeurs (Ă  droite - les mĂȘmes points pour BĂ©zier):







Conclusion



Le développement ultérieur de la méthode considérée de construction de courbes est une augmentation du nombre de vecteurs impliqués dans la construction de la courbe et, par conséquent, une augmentation du nombre de points directeurs. Cependant, contrairement aux courbes de Bézier, l'augmentation de l'ordre n'est pas évidente ici et nécessite une réflexion réfléchie séparée. Diverses méthodes pour les combiner avec les courbes de Bézier sont également possibles - en particulier, l'interpolation du centre du cercle des vecteurs de dessin.



La mĂ©thode envisagĂ©e de construction de courbes n'est pas non plus la seule, dont un cas particulier sont des arcs de cercle et une ellipse - au moins, une ellipse peut ĂȘtre construite Ă  travers l' intersection de lignes droites dans un parallĂ©logramme(cependant, dans cette version, l'auteur a Ă©chouĂ©). Il est possible qu'il existe d'autres solutions, y compris des options dĂ©crites dans l'article - Ă©crivez dans les commentaires si vous savez quelque chose sur ce sujet.



Le code source de l'article peut ĂȘtre tĂ©lĂ©chargĂ© Ă  partir de GitHub .



All Articles