Calcola Ellisse in base a 4 punti

1

Ho bisogno di spostare un oggetto basato su 100 immagini rotanti. L'oggetto deve muoversi in un percorso che forma un'ellisse quando ruoto l'immagine in base ai miei gesti.

Ho 4 punti , 2 coppie di punti opposti sull'asse X / Y , sull'ellisse, ma come faccio a calcolare il resto dei punti in code-behind in modo che io possa calcolare il nuovo valore X / Y del mio prossimo / precedente punto ?

Attualmente sto ruotando il mio oggetto in un cerchio, che cos'è un inizio ma non quello che voglio ...

    
posta Tom Kerkhove 07.03.2012 - 12:30
fonte

3 risposte

3

Se lavori in coordinate polari, l'equazione per un'eclissi è

( Per gentile concessione di Wikipedia )

aeb sono i fattori di scala nell'asse X e Y, Theta è l'angolo di rotazione.

Traducendo la tua situazione, aeb corrispondono ai punti in cui l'ellisse attraversa l'asse X e Y.

Questo ti dà il punto radiale a un certo angolo di rotazione. Puoi quindi risolvere xey utilizzando Trigonometria.

    
risposta data 07.03.2012 - 13:05
fonte
1

Se i tuoi punti sono sempre all'estremità degli assi dell'ellisse, allora la tua equazione dovrebbe assomigliare a

1 = (x - (x1 + x2)/2)^2 / ((x1 - x2)/2)^2 + (y - (y3 + y4)/2)^2 / ((y3 - y4)/2)^2

Fondamentalmente, l'equazione di un'ellisse è

(x - x0)^2/a^2 + (y - y0)^2/b^2 = 1

dove (x0, y0) è il centro dell'ellisse e 2a e 2b sono le lunghezze degli assi orizzontale e verticale.

Quindi se (x1, y1) e (x2, y2) sono le estremità dell'asse orizzontale, quindi (x1 + x2) / 2 è la coordinata x del centro dell'ellisse. Anche abs (x1 - x2) / 2 è il valore di a.

Allo stesso modo, se (x3, y3) e (x4, y4) sono le estremità dell'asse verticale, allora gli stessi calcoli con le coordinate y ti danno la coordinata y del centro e il valore di b.

    
risposta data 07.03.2012 - 13:16
fonte
1

La rotazione su un percorso ellittico significa che vorrete calcolare le coordinate cartesiane (x, y) mentre il tempo (t) varia. Questo è semplicemente semplice. Se P è il periodo di rivoluzione:

x = a * cos(2 * pi * t / P)
y = b * sin(2 * pi * t / P)

Mi spiace, nessuna composizione matematica di fantasia. [Se qualcuno può indicarmi un modo conveniente per farlo, sarebbe fantastico]

    
risposta data 07.03.2012 - 18:59
fonte

Leggi altre domande sui tag