2011-03-13 4 views
12

Lien: Official SVG ReferenceCalcul des points de contrôle pour un chemin SVG raccourci/lisse Bézier courbe

hommes Bonjour et femmes, je rencontre des problèmes avec un raccourci (défini par S ou s dans pathdata) courbes de Bézier définies comme des chemins SVG. Plus précisément, comment calculer le premier point de contrôle.

Disons que nous avons une commande curveto avec des points de contrôle et (X1, Y1)(X2, Y2), point final (X3, Y3) et point de départ (X0, Y0).

Ensuite vient une commande de raccourcissement/courbe lisse avec un premier point de contrôle (X4, Y4) et un deuxième point de contrôle (X5, Y5). Supposons que tout est en coordonnées absolues pour la simplicité. Comment calculer le premier point de contrôle inconnu (X4, Y4) à partir des autres points connus?

+0

Comment trouver des points de contrôle pour un BezierSegment donné Début, Fin, et 2 Pts d'Intersection en C# - Interpolation à quatre points de Bézier Cubique AKA] (http://stackoverflow.com/questions/2315432/how-to-find-control-points-for-a-bezi ersegment-given-start-end-and-2-intersecti) – Gabe

Répondre

15

Votre premier point est le dernier point de la courbe précédente. Dans ce cas, ce serait (x3, y3). Ensuite, votre deuxième point dans la main courte est le point final de la longueur de la courbe représentée par la sténographie.

Si nous voulons traduire vos chemins dans les deux versions de pleine longueur nous avons:

M X0, Y0 C X1, Y1 X2, Y2 X3, Y3 
M X3, Y3 C XR, YR X4, Y4 X5, Y5 

Où XR, YR est le reflet du dernier point de contrôle de la courbe précédente sur le premier point du courant courbe.

XR, YR est juste le reflet de P2 sur les P3 donc:

XR = 2*X3 - X2 and 
YR = 2*Y3 - Y2 
+0

Il n'y a pas de malentendu, j'ai juste appelé mon premier point de contrôle pour la deuxième courbe (X4, Y4) et vous l'avez appelée (XR, YR) à la place. –

+0

Désolé, je voulais dire le premier point comme un passage à ... éditer maintenant ... – KeatsKelleher

+1

J'ai eu le temps de tester cela, et c'est correct! Merci! –

0

vous pouvez traiter le dernier point de contrôle de la dernière courbe et le point final de la dernière courbe (ce qui est le premier point la nouvelle courbe) en tant que ligne, et le point de contrôle en miroir doit se trouver sur cette ligne à une distance égale à la distance entre le dernier point de contrôle et le dernier point d'extrémité

Questions connexes