Voglio spostare un oggetto (punto) in un percorso circolare. Come devo modificare le coordinate X e Y per ottenere questo risultato?
Voglio spostare un oggetto (punto) in un percorso circolare. Come devo modificare le coordinate X e Y per ottenere questo risultato?
Risposte:
Puoi farlo usando la matematica semplice:
X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;
(originX, originY) è il centro della tua cerchia. il raggio è il suo raggio. Questo è tutto.
Questo funziona perché seno e coseno sono matematicamente correlati al cerchio unitario .
Credito di immagine: LucasVB (opera propria) [dominio pubblico], tramite Wikimedia Commons . (Ridotto al 70%.)
Puoi usare l'equazione parametrica come indicato da Krom. Per capire perché abbiamo usato questa formula devi capire qual è l'equazione. Questa equazione deriva dall'equazione parametrica del cerchio .
Considerando che il cerchio viene disegnato con il centro sull'origine (O) come mostrato nel diagramma seguente
Se prendiamo un punto "p" sulla circonferenza del cerchio, avente un raggio r.
Lascia che l'angolo creato da OP (Origin to p) sia θ. Lascia che la distanza di p dall'asse x sia y Lascia che la distanza di p dall'asse y sia x
Usando i presupposti di cui sopra otteniamo il triangolo come mostrato di seguito:
Ora sappiamo che cos θ = base / ipotenusa e peccato θ = perpendicolare / ipotenusa
che ci dà cos θ = x / r e sin θ = y / r
:: x = r * cos θ e y = r * sin θ
Ma se il cerchio non è all'origine e piuttosto in (a, b) allora possiamo dire che il centro del cerchio è spostato
a unità nell'asse x
unità b nell'asse y
Quindi per un tale cerchio possiamo modificare di conseguenza l'equazione parametrica aggiungendo lo spostamento sull'asse xey dandoci le seguenti equazioni:
x = a + (r * cos θ)
y = b + (r * sin θ)
Dove a & b sono le coordinate x, y del centro del cerchio.
Quindi abbiamo trovato xey le coordinate del punto sulla circonferenza del cerchio con raggio r
C'è un altro trucco, in cui usi le formule sin (x + a) e cos (x + a), e che ti permette di calcolare sin (a) e cos (a) - un essere l'angolo con cui vuoi muoverti dalla tua posizione attuale - solo una volta e fai semplicemente moltiplicazioni e aggiunte ad ogni passaggio.
sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Naturalmente, ciò presuppone una velocità angolare costante.
Attenzione però alla precisione aritmetica limitata. Ho osservato in passato un movimento "circolare" implementato in quel modo che avrebbe disegnato una spirale a seguito di arrotondamenti occasionali ripetuti nel tempo. Potrebbe essere necessario ripristinare la posizione su (x0, y0) dopo ogni giro.