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


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.