Mover un objeto en un camino circular

26

Quiero mover un objeto (punto) en una ruta circular. ¿Cómo debo cambiar las coordenadas X e Y para lograr esto?

Ganapathy C
fuente

Respuestas:

54

Puedes hacerlo usando matemáticas simples:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX, originY) es el centro de su círculo. radio es su radio. Eso es.

Esto funciona porque el seno y el coseno están matemáticamente relacionados con el círculo unitario .

relación de seno y coseno con el círculo unitario
Crédito de la imagen: LucasVB (Trabajo propio) [Dominio público], a través de Wikimedia Commons . (Reducido al 70%).

Krom Stern
fuente
¿Qué pasa si es un óvalo? Es decir, no hay radio establecido.
prueba
2
@test: si el óvalo está orientado a X o Y, puede multiplicar la posición del eje correspondiente por un factor adicional. Si necesita más detalles, debe hacer una pregunta por separado.
Kromster dice que apoya a Mónica el
@ Anko: No creo que la animación lo explique mejor, pero déjalo ser, para aquellos que lo necesitan. Convertido a CW.
Kromster dice que apoya a Mónica
@Kromster, ¿qué hay de lograr el mismo resultado en el espacio 3D?
Tomás
14

Puede usar la ecuación paramétrica marcada por Krom. Para entender por qué usamos esta fórmula, debe comprender cuál es la ecuación. Esta ecuación se deriva de la ecuación paramétrica de círculo .

Teniendo en cuenta que el círculo se dibuja con el centro en el origen (O) como se muestra en el diagrama a continuación Circulo

Si tomamos un punto "p" en la circunferencia del círculo, que tiene un radio r.

Deje que el ángulo formado por OP (origen a p) sea θ. Deje que la distancia de p desde el eje x sea y Deje que la distancia de p desde el eje x sea x

Usando los supuestos anteriores obtenemos el triángulo como se muestra a continuación: triángulo

Ahora sabemos que cos θ = base / hipotenusa y sin θ = perpendicular / hipotenusa

lo que nos da cos θ = x / r y sin θ = y / r

:: x = r * cos θ e y = r * sin θ

Pero si el círculo no está en el origen y más bien en (a, b), entonces podemos decir que el centro del círculo está desplazado

unidades a en el eje x
unidades b en el eje y
Por lo tanto, para dicho círculo podemos cambiar la ecuación paramétrica en consecuencia agregando el desplazamiento en los ejes x e y dándonos las siguientes ecuaciones:

x = a + (r * cos θ)
y = b + (r * sen θ)


Donde a & b son las coordenadas x, y del centro del círculo.

Por lo tanto, encontramos x e y las coordenadas del punto en la circunferencia del círculo con radio r

fer0x
fuente
2
Gracias, muy buena y breve respuesta a este problema, aprobado
Ali.Ghodrat
5

Hay otro truco, donde usas las fórmulas sin (x + a) y cos (x + a), y eso te permite calcular sin (a) y cos (a), un ángulo con el que quieres moverte desde su posición actual, solo una vez y simplemente haga multiplicaciones y sumas en cada paso.

sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.

Por supuesto, eso supone una velocidad angular constante.

Sin embargo, tenga cuidado con la precisión aritmética limitada. He observado en el pasado un movimiento "circular" implementado de esa manera que dibujaría una espiral como resultado de redondeos ocasionales repetidos con el tiempo. Puede ser necesario restablecer la posición a (x0, y0) después de cada revolución.

sylvainulg
fuente