Algorithme pour calculer les points de contrôle d'une courbe de bézier de points le long de cette courbe?
J'ai été à la recherche pour, mais, évidemment, pas à trouver un algorithme qui va me permettre de le brancher dans une liste de coordonnées x,y, qui sont connus pour être le long d'une courbe, de manière à obtenir les 4 points de contrôle d'une courbe de bézier cubique cracher.
Pour être plus précis, je suis à la recherche d'un algorithme qui va me donner les deux points de contrôle nécessaires à la forme de la courbe lors de la saisie d'une série de points discrets, y compris les deux points de contrôle qui déterminent le début et la fin de la courbe.
Merci!
Edit: Bon, en raison de mathématiques, un vieil ennemi, je dois demander la courbe de meilleur ajustement à une fonction polynomiale.
OriginalL'auteur Everlag | 2013-10-07
Vous devez vous connecter pour publier un commentaire.
Donc je suppose que les points de terminaison sont fixes, et puis vous avez un certain nombre de (x,y) de l'échantillon de points que vous souhaitez pour s'adapter à une courbe de Bézier.
Le nombre de points d'échantillonnage que vous avez permettra de déterminer quelle approche prendre. Nous allons regarder à travers quelques cas:
2 points
2 points d'échantillonnage est le cas le plus simple. Qui vous donne un total de 4 points, si vous comptez les points de fin. C'est le nombre de Cv dans une courbe de Bézier. Pour résoudre ce problème, vous avez besoin d'un paramètre (t) de la valeur pour les deux points d'échantillonnage. Ensuite, vous avez un système de 2 équations et 2 points que vous devez résoudre, d'où l'équation est l'équation paramétrique d'une courbe de Bézier à la t les valeurs que vous avez choisi.
Les valeurs t peut-être ce que vous voulez, mais vous obtiendrez de meilleurs résultats en utilisant 1/3 et 2/3, ou à la recherche à distance relative ou relative de la distance le long d'une ligne de base, en fonction de vos données.
1 point
Ceci est similaire à 2 points, sauf que vous n'avez pas suffisamment d'informations de manière unique déterminer tous vos degrés de liberté. Ce que je suggère, c'est de s'adapter à un de Bézier quadratique, puis degré élever. J'ai écrit un exemple détaillé de quadratique de montage dans les cette question.
Plus de 2 points
Dans ce cas, il n'y a pas une solution unique. J'ai utilisé la méthode des moindres carrés rapprochement avec de bons résultats. Les étapes sont les suivantes:
Il y a une bonne description de ces étapes dans cette gratuit cagd manuel, chapitre 11. Il parle de montage b-splines, mais une courbe de bézier est un type de courbe b-spline (noeud vecteur est 0,0,0,1,1,1 et dispose de 4 points).
Si la courbe de l'exactitude n'a pas trop d'importance, vous pouvez essayer il suffit de prendre deux points et de faire le point 2 de la méthode.. 🙂
Je vise un décent de loisirs des bords isolé avec l'opérateur de sobel donc la précision serait de beaucoup préférable.
OriginalL'auteur tfinniga
Disons que vous avez une courbe y = f(x)
Pour définir une courbe de bézier vous avez besoin de 4 points, comme:
P1x, P1y, P2x, P2y, P3x, P3y et P4x et P4y
P1 et P4 vous êtes au début/fin des points de la courbe. P2 et P3 sont des points de contrôle.
Vous savez déjà où le début et la fin de la courbe. Vous devez calculer P2 et P3. La coordonnée x P2x et P3x sont facile, parce que vous venez chercher par la sélection de la courbe de
t
être par exemple 1/3 et 2/3. Si vous avez P2x et P3xEnsuite, vous vous retrouvez avec un système de deux équations et deux inconnues (le P2y et P3y).
Après quelques calculs, des calculs, vous vous retrouvez avec quelque chose comme ceci:
(Ma f(x) est un polynôme cubique, qui a aussi assuré que je serais capable de l'adapter à une courbe de Bézier cubique à exactement.)
OriginalL'auteur Teomat