Je pense que vous avez voulu dire la classe QuadCurve2D, qui est une courbe de Bézier quadratique. Il semble n'y avoir aucune méthode prête à l'emploi pour cela, et le problème vient à la distance du point à la courbe de Bézier. Let's P0 sera votre point, P1
est un point de départ, P2
- un point de contrôle et P3
est un point final de votre courbe. Ensuite point de la courbe sera donnée par
P = B(t)
Il est tel t
, pour laquelle la distance entre P
et P0
sera minime.
F(t) = (B(t)_x - P0_x)^2 + (B(t)_y - P0_y)^2 -> min
Si la distance est 0 ou inférieure à une erreur, alors PO est sur la courbe. t peuvent être trouvés par la méthode itérative de NETWON en minimisant la fonction de coût
t_n = t_n-1 + F'(t)/F''(t)
où F'
est dérivée première de la fonction de coût et F''
est sa dérivée seconde.
F'(t) = 2 * (B(t)_x - P0_x) * B'(t)_x + 2 * (B(t)_y - P0_y) * B'(t)_y
F''(t) = 2 * B'(t)_x * B'(t)_x + 2 * (B(t)_x - P0_x) * B''(t)_x +
2 * B'(t)_y * B'(t)_y + 2 * (B(t)_y - P0_x) * B''(t)_y
la dérivée première de la courbe de Bézier quadratique B '(t) est un segment de droite avec un point de départ et le point final (P2 - P1)
(P3 - P2)
. Le deuxième dérivé B''(t)
est un point P3 - 2 * P2 + P1
. Le branchement de tous les éléments donnera une formule à t
pour laquelle F(t)
est minime.