Obter posição do ponto na circunferência do círculo, dado um ângulo?

13

Gostaria de saber como obter um ponto específico na circunferência de um círculo, dado um ângulo. O diâmetro do círculo é 1 e o ponto central do círculo é { X: 0.5, Y: 0.5 }.

Mathias Lykkegaard Lorenzen
fonte

Respostas:

23

Você pode resolver isso usando trigonometria básica. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

Tan(angle) = Opposite / Adjacent
Sin(angle) = Opposite / Hypotenuse
Cos(angle) = Adjacent / Hypotenuse

Eu sempre me lembro do que foi dito acima.

The Old Arab
Sat On His
Camel And Howled

O acima significa que, se tivermos o ângulo e um comprimento de um triângulo retângulo, podemos calcular os comprimentos dos outros lados. Felizmente, seu problema pode ser considerado como o cálculo do comprimento dos lados do triângulo:

Imagem do triângulo do círculo

Acima, r é a hipotenusa, x é o adjacente e y é o oposto.

Então, para x:

Cos(a) = x / r
Cos(a) * r = x
x = Cos(a) * r

E para y:

Sin(a) = y / r
Sin(a) * r = y
y = Sin(a) * r

Isso está assumindo um círculo em (0, 0), então adicionamos apenas o centro do círculo.

radius = 1;
CenterX = 0.5;
CenterY = 0.5;

x = Cos(angle) * radius + CenterX;
Y = Sin(angle) * radius + CenterY;

Nota: As funções matemáticas do C # usam ângulos em radianos; portanto, se você tiver graus, converta-os primeiro:

radians = degrees * Math.PI / 180
George Duckett
fonte
1
Lembre-se de que o ângulo deve estar em radianos.
bummzack
Depende da biblioteca de matemática, mas o ponto positivo é que o XNA / .Net usa radianos.
George Duckett 10/10
Por que o velho árabe uivava? Aqui estamos nem todos os falantes de inglês para que uma regra memonic conceitual é muito melhor do que uma frase mnemónica
FXIII
1
@FxIII: É verdade que não é o memônico mais popular, mas sempre achei fácil lembrar do que o SOHCAHTOA, pois é incomum.
George Duckett 10/10
Ou você pode procurar, uma vez familiarizado com o conceito, uma ou duas vezes por ano em que você precisa.
Tétrada