Eu quero mover um objeto (ponto) em um caminho circular. Como devo alterar as coordenadas X e Y para fazer isso?
Eu quero mover um objeto (ponto) em um caminho circular. Como devo alterar as coordenadas X e Y para fazer isso?
Respostas:
Você pode fazer isso usando matemática simples:
X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;
(origemX, origemY) é o centro do seu círculo. raio é seu raio. É isso aí.
Isso funciona porque o seno e o cosseno estão matematicamente relacionados ao círculo unitário .
Crédito da imagem: LucasVB (Trabalho próprio) [Domínio público], via Wikimedia Commons . (Reduzido para 70%.)
Você pode usar a equação paramétrica conforme marcado por Krom. Para entender por que usamos essa fórmula, você precisa entender qual é a equação. Esta equação é derivada da equação paramétrica do círculo .
Considerando que o círculo é desenhado com o centro na origem (O), como mostrado no diagrama abaixo
Se tomarmos um ponto "p" na circunferência do círculo, tendo um raio r.
Seja o ângulo feito por OP (Origem para p) seja θ. Seja a distância de p do eixo x seja y Deixe a distância de p do eixo y seja x
Usando as premissas acima, obtemos o triângulo como mostrado abaixo:
Agora sabemos que cos θ = base / hipotenusa e pecado θ = perpendicular / hipotenusa
que nos dá cos θ = x / r e sin θ = y / r
:: x = r * cos θ e y = r * sin θ
Mas se o círculo não está na origem e sim em (a, b), podemos dizer que o centro do círculo é deslocado
a unidades no eixo x
b unidades no eixo y
Então, para esse círculo, podemos alterar a equação paramétrica de acordo, adicionando a mudança no eixo xey, fornecendo as seguintes equações:
x = a + (r * cos θ)
y = b + (r * sin θ)
Onde a & b são as coordenadas x, y do centro do círculo.
Portanto, encontramos xey as coordenadas do ponto na circunferência do círculo com raio r
Há outro truque, no qual você usa as fórmulas sin (x + a) e cos (x + a), e isso permite que você calcule sin (a) e cos (a) - um ser o ângulo pelo qual você deseja mover da sua posição atual - apenas uma vez e faça simplesmente multiplicação e acréscimos a cada etapa.
sen (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Obviamente, isso assume velocidade angular constante.
Cuidado com a precisão aritmética limitada, no entanto. Eu observei no passado o movimento "circular" implementado dessa maneira que desenharia uma espiral como resultado de arredondamentos ocasionais repetidos ao longo do tempo. Pode ser necessário redefinir a posição para (x0, y0) após cada rotação.