2011-03-13 5 views
12

Link: Official SVG ReferenceCalcolo punti di controllo per un/liscio percorso SVG stenografia Bezier curva

Hello uomini e donne, sto avendo qualche problema con stenografia (definito da S o s in pathdata) curve di Bézier definita come percorsi SVG. In particolare, come calcolare il primo punto di controllo.

Supponiamo di avere un comando curveTo con punti di controllo (X1, Y1) e (X2, Y2), endpoint (X3, Y3) e punto (X0, Y0) partenza.

Segue un comando di curva stenografia/curva lineare con un primo punto di controllo (X4, Y4) e il secondo punto di controllo (X5, Y5). Supponiamo che tutto sia in coordinate assolute per semplicità.

Come si calcola il primo punto di controllo sconosciuto (X4, Y4) dagli altri punti noti?

+0

possibile duplicato di [Come trovare i punti di controllo per un BezierSegment dati di inizio, fine e 2 punti di intersezione in C# - AKA Cubic Bezier 4 punti di interpolazione] (http://stackoverflow.com/questions/2315432/how-to-find-control-points-for-a-bezi ersegment-given-start-end-and-2-intersecti) – Gabe

risposta

15

Il primo punto è l'ultimo punto della curva precedente. In questo caso sarebbe (x3, y3). Quindi il secondo punto nella mano corta è il punto finale per la lunghezza della curva che rappresenta la stenografia.

Se siamo a tradurre i percorsi in entrambe le versioni di lunghezza completa avremmo:

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

Dove XR, YR è il riflesso l'ultimo punto di controllo della curva precedente circa il primo punto della corrente curva.

XR, YR è solo il riflesso di P2 circa P3 così:

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

Non c'è malinteso, ho appena chiamato il mio primo punto di controllo per la seconda curva (X4, Y4) e invece lo hai chiamato (XR, YR). –

+0

Scusate, intendevo il primo punto come una mossa per ... modificare ora ... – KeatsKelleher

+1

Sono andato in giro a testare questo, e questo è corretto! Grazie! –

0

è possibile trattare l'ultimo punto di controllo dall'ultima curva e il punto finale dell'ultima curva (che è il primo punto la nuova curva) come una linea e il punto di controllo speculare dovrebbe trovarsi su quella linea ad una distanza uguale alla distanza dall'ultimo punto di controllo all'ultimo punto finale