Quiero mover un objeto (punto) en una ruta circular. ¿Cómo debo cambiar las coordenadas X e Y para lograr esto?
Quiero mover un objeto (punto) en una ruta circular. ¿Cómo debo cambiar las coordenadas X e Y para lograr esto?
Respuestas:
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 .
Crédito de la imagen: LucasVB (Trabajo propio) [Dominio público], a través de Wikimedia Commons . (Reducido al 70%).
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
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:
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
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.