Come posso spostare un oggetto in una traiettoria "infinito" o "figura 8"?


28

Quando voglio spostare l'oggetto attorno al punto lo faccio:

    point.x *= cosf(timer.timeElapsed);
    point.y *= sinf(timer.timeElapsed);

Come far muovere il punto sulla traiettoria del segno otto o infinito?

Risposte:



61

Come osserva Marton, ci sono diverse curve a "figura di otto" che potrebbero soddisfare le tue esigenze. Forse il più semplice è il lemniscato di Gerono , che ha la parametrizzazione:

x = cos(t);
y = sin(2*t) / 2;

e si presenta così:

Lemniscate di Gerono animazione

Tuttavia, il lemniscato di Bernoulli può essere visivamente più gradevole; ha una parametrizzazione molto simile al lemniscato di Gerono, tranne per il fatto che entrambi gli assi sono ridimensionati di un fattore di 1/(sin(t)^2 + 1) = 2/(3 - cos(2*t)):

scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;

Sembra così:

Lemniscate di animazione di Bernoulli

(Animazioni realizzate con Maple 13, compresse con GIFsicle.)


Grazie a tutti per il vostro supporto, che mi ha fatto guadagnare il mio primo distintivo d'oro qui su gamedev! :-)
Ilmari Karonen il

1
+1 per pubblicare non solo i collegamenti, ma anche le formule e la grafica (con fonti).
rootlocus,

2
Così com'è, questa dovrebbe essere la risposta accettata.
Brian H.

-1

Ne ho trovato casualmente un altro usando questa formula:

x2=y2+0.1x2.8

Come tracciato da Wolfram Alpha :

metà di un simbolo di infinito


A differenza delle altre risposte, questa non è attualmente presentata in forma parametrica che ci consente di far avanzare facilmente la posizione nel tempo t. Consiglierei di includere una descrizione di come useresti questa formula per posizionare un oggetto in movimento nel tempo.
DMGregory

-4

((x+1)2+y2)((x1)2+y2)=1

metà di un simbolo di infinito

Il prodotto delle distanze da qualsiasi punto su quella curva a (-1, 0) e a (1,0) è costante ed è uguale a 1.


4
Questa risposta fornisce una formula che modella tale curva, ma non un metodo per "spostare un oggetto" in modo tale da seguire quella curva. Per favore, considera di elaborare la risposta per indicare come useresti questa matematica per spostare un oggetto in un gioco.
DMGregory
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.