Отримайте положення точки на окружності кола, задавши кут?


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 - навпаки.

Отже, для x:

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 # Math використовують кути в радіанах, тому, якщо у вас є градуси, перетворіть їх спочатку:

radians = degrees * Math.PI / 180

1
Майте на увазі, що кут повинен бути в радіанах.
bummzack

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

Чому старий араб мав вити? Тут ми не всі мовці англійською, тому концептуальне мемонічне правило набагато краще, ніж мнемонічне речення
FxIII

1
@FxIII: Правда, це не найпопулярніша пам'ятка, проте мені завжди було легко запам'ятати, ніж SOHCAHTOA, як це незвично.
Джордж Дюкетт

Або ви могли просто заглянути, як тільки ви ознайомитесь із цією концепцією, один чи два рази на рік, що вам це потрібно.
Тетрад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.