Алгоритм побудови кутів правильного багатобічного багатокутника


10

Я переглянув це за допомогою багатьох комбінацій ключових слів, але, на превеликий подив, я не зміг знайти алгоритм побудови правильного, n-однобічного багатокутника в заданому колі, тобто знаходження координат для n точок кута. Все, що я міг знайти, - це інструкції, як це зробити за допомогою фізичного компаса та випрямлення, або інтерактивні плагіни браузера без джерела.

То де я міг знайти такий алгоритм?


2
Дозвольте мені відновити вашу віру в Google. ;-) Четвертий хіт для "алгоритму регулярного багатокутника": gamedev.net/topic/… "Тоді, використовуючи основну тригонометрію, вибрали n точок, розташованих однаково відстань навколо кола кола (тобто - якщо n дорівнює 3, обрав 3 бали на окружність, яка знаходиться на відстані 120 градусів один від одного) ". Саме це і робить код Кевіна.
Ерік

Відповіді:


15

З iпереходом від 0 to n-1включно:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

Редагувати: Як згадував Ларс Віклунд у коментарях, це безпечно лише на таких мовах, як javascript, в якому ціле ділення повертає число з плаваючою комою, а не ціле число. Іншими мовами слід спочатку кинутись iна поплавок.


3
Остерігайтеся пастки інтегрального поділу в i / n на мовах, де ділення цілих чисел дає ціле число.
Ларс Віклунд

Ааа, дуже хороший момент, я додам цю відповідь у відповідь.
Ельва

Це само собою зрозуміло, але ви також хочете захистити справу, коли n * 2 * PI == 0або у вас буде один нещасний багатокутник :(.
Zack The Human

Заборона дивно переповнює єдиний п, на який n * 2 * PI == 0я можу подумати, це 0, який, наскільки я знаю, не визначений, такий же, як i / 0. Так що жодних проблем не так? :)
Ельва
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.