Получить положение точки на окружности окружности, учитывая угол?


13

Я хотел бы знать, как получить конкретную точку на окружности круга, учитывая угол. Диаметр круга равен 1, а центральная точка круга равна { X: 0.5, Y: 0.5 }.

Ответы:


23

Вы можете решить это, используя базовую тригонометрию. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

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

Я всегда помню как

The Old Arab
Sat On His
Camel And Howled

Вышеуказанное означает, что если у нас есть угол и одна длина прямоугольного треугольника, мы можем определить длины других сторон. К счастью, ваша проблема может рассматриваться как вычисление длины сторон треугольника:

Круг треугольник изображение

Выше r - гипотенуза, x - соседний, а y - противоположный.

Итак, для х:

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

И для тебя:

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

Предполагается, что круг в точке (0, 0), поэтому мы просто добавляем центр круга.

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

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

Примечание: математические функции C # используют углы в радианах, поэтому, если у вас есть градусы, сначала преобразуйте их:

radians = degrees * Math.PI / 180

1
Имейте в виду, что угол должен быть в радианах.
bummzack

Зависит от математической библиотеки, но хороший момент, XNA / .Net использует радианы.
Джордж Дакетт

Почему старый араб был выть? Здесь мы не все говорим по-английски, так что концептуальное мемоническое правило намного лучше, чем мнемоническое предложение
FxIII

1
@FxIII: Правда, это не самая популярная мелодика, однако мне всегда было легче ее запомнить, чем SOHCAHTOA, поскольку она необычна.
Джордж Дакетт

Или вы можете просто посмотреть, как только вы знакомы с концепцией, раз или два в год, что вам нужно.
Тетрад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.