2011-11-21 8 views
9

Ho una curva bezier cubica in cui sono indicati il ​​primo e l'ultimo punto (vale a dire P0 (0,0) e P3 (1,1)). Gli altri due punti sono definiti in questo modo: cubico-bezier (0,25, 0,1, 0,25, 1,0) (X1, Y1, X2, Y2, anche questi valori non devono essere più piccoli o più grandi di 0 o 1, rispettivamente)
Ora cosa dovrei fare per ottenere la coordinata Y per una data X, supponendo che ce ne sia una sola? (So ​​che in certe circostanze possono esserci più valori, ma mettiamoli da parte. Non sto facendo scienza missilistica qui, voglio solo essere in grado di ottenere Y più volte al secondo per fare transizioni)Curve bezier cubiche - ottieni Y per dato X

Sono riuscito a trovare questo: y coordinate for a given x cubic bezier, ma non capisco cosa significhi xTarget.
Oh, anche questo non è un compito a parte, sono solo un po 'infastidito dal fatto che non ci siano cose comprensibili sulle curve cubiche di Bezier su Internet.

+0

La domanda appare anche qui: http://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier Non è sicuro quale sia stato il primo, ma potrebbe contenere informazioni aggiuntive. – mredig

risposta

16

Se hai

P0 = (X0,Y0) 
P1 = (X1,Y1) 
P2 = (X2,Y2) 
P3 = (X3,Y3) 

Quindi per qualsiasi t in [0,1] si ottiene un punto sulla curva data dalle coordinate

X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3 
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3 

Se le viene somministrato un valore x, allora avete bisogno di trovare i valori t in [0,1] corrispondenti a quel punto sulla curva, quindi utilizzare i valori t per trovare la coordinata .

Nell'equazione X(t), impostare il lato sinistro per il vostro valore x e collegare X0, X1, X2, X3. Questo ti lascia con un polinomio cubico con variabile t. Risolvilo per t, quindi collega il valore t all'equazione Y(t) per ottenere la coordinata .

Risolvere il cubic polynomial è difficile ma può essere fatto utilizzando attentamente uno dei metodi per risolvere un polinomio cubico.

+0

Con un piccolo aiuto da parte di alcuni amici, sono stato in grado di comprenderlo. Ho riscritto due funzioni che ho ottenuto in un altro forum per realizzare ciò di cui avevo bisogno: http://cl.ly/C1Nl (C#, potrebbe anche non essere carina) Grazie per il tuo aiuto! :) –

+0

Cosa c'è in questa formula ?? –

+0

@JhansiKiRani t è quello che vuoi che sia, purché sia ​​compreso tra 0 e 1. –

Problemi correlati