Algorithme pour trouver le centre d'une courbe de Bézier


8

J'ai besoin de trouver le centre d'une courbe de Bézier pour la faire pivoter. J'ai une liste de tous les points (points de contrôle, début et fin, tous les points sur la courbe elle-même). Comment pourrais-je trouver son centre?


4
Les courbes sont des entités mathématiques qui n'ont pas de centres en tant que tels. Cependant, vous recherchez peut-être le centre de la boîte boudante, le centre de la boîte englobante minimale, le centre de gravité de la zone fermée sous-jacente à la courbe lorsque les points d'extrémité sont connectés, le centre de gravité des polézières fermées, le milieu de la courbe, la moyenne du point de contrôle, etc.
joojaa

1
@joojaa il y a certainement 2 centres naturels auxquels je peux penser, l'un est le t=0.5point. et deux est le milieu géométrique concernant la distance cartésienne de voyage le long de la ligne.
v.oddou

1
@ v.oddou oui en fait il y en a beaucoup plus c'est pourquoi la question a besoin d'être clarifiée. Toutes les applications vectorielles que j'ai utilisées (Illustrator, xara, corel, sketch, etc.) Utilisez le centre du cadre de délimitation local pour faire pivoter les objets, il est donc rare de voir les autres définitions de centre utilisées.
joojaa

Réponses:


14

Les courbes de Bézier sont des entités mathématiques et n'ont pas de centre clairement défini. On peut en effet définir beaucoup de choses différentes comme le centre de la courbe de Bézier. J'ai essayé de représenter certains des centres possibles dans l'image 1. Plus que cela existe.

entrez la description de l'image ici

Image 1 : Certains des centres possibles d'une courbe de Bézier à travée unique

Dans la pratique, presque toutes les applications graphiques conçues pour le dessin utilisent le centre du cadre de délimitation local (BB) comme centre. Les logiciels d'animation ont généralement un concept supplémentaire de pivot, ils utilisent donc l'approche de l'utilisateur, si aucune entrée n'est effectuée, ils reviennent souvent au centre BB ou simplement au centre de coordonnées local. C'est probablement parce que le BB doit être calculé de toute façon et obtenir son centre est assez facile à faire (voir Une introduction aux courbes de Bézier ).

Les mesures du centre de gravité sont également quelque peu naturelles, en particulier dans un contexte d'animation, bien que plus difficiles à calculer. Le plus simple étant de discrétiser les données et de faire le calcul sur l'entrée discrète. Cela dit, certaines solutions de forme fermée sont possibles pour le centre de gravité de la courbe, mais ce n'est pas une très bonne équation à formuler et à simplifier.

Ensuite, nous avons les points sur la courbe: le milieu par la longueur de l'arc et le point où le paramètre est 0,5. Dans mon esprit, le paramètre est souvent problématique mais facile à calculer, et il perd son sens lorsque vous enchaînez plusieurs Béziers les uns après les autres pour un polybézier. Le centre de longueur n'est bien entendu naturel que tant que la courbe n'est pas fermée.tt

Nous définissons également d'autres centres possibles, le centre pouvant être au centre de gravité de la courbe de la coque, à la moyenne des points de contrôle ou au centre BB de la cage de contrôle. Bien qu'en pratique, cela ne semble pas très bien fonctionner.

Remarque : Bien que la courbe de l'image 1 montre le centre BB assez proche de certains centres naturels, ce n'est pas toujours le cas pour les courbes plus complexes et en particulier les polybéziers.


3
Je n'appellerais pas cela un commentaire. Je dirais que c'est une excellente réponse qui aborde le niveau actuel de connaissances du demandeur, explique pleinement pourquoi la question est plus large que prévu et ouvre la voie à de nouvelles questions.
trichoplax du

@trichoplax pourrait cependant être résumé comme "définir le centre" par les moins polis.
ratchet freak

@ratchetfreak Je préfère les réponses qui essaient d'identifier le manque de connaissances du demandeur plutôt que de s'attendre à ce qu'il comprenne parfaitement le sujet sur lequel il pose la question.
trichoplax

Je cherche un moyen d'obtenir le DISTANCE MIDPOINT pour mes courbes de bezier quadruples et cubiques. J'utilisais la valeur t 0,5 et comme vous l'avez dit, je viens de réaliser que c'est problématique. Ce que j'essaie de faire maintenant avec le calcul de Bézier, c'est de déplacer les balles à une vitesse égale. Mais en utilisant la valeur t, il est si difficile .. Je pense que je dois trouver des valeurs t appropriées en fonction de la longueur de l'arc. Une ressource ou un petit indice pour moi, s'il vous plaît?
Jenix

2
Malheureusement, il n'existe aucune solution de forme fermée générale simple pour les béziers, mais une bonne ressource qui couvre numériquement le faire et bien plus peut être trouvée ici . Mais peut-être que cela suffit @Jenix
joojaa

1

Puisque nous ne savons pas quelle définition de «centre» utiliser, nous pouvons aussi bien utiliser la plus simple. Ce serait où , , , sont les points de contrôle de la courbe.

Center=14(P0+P1+P2+P3)
P0P1P2P3
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.