일반 n면 다각형의 모서리를 구성하는 알고리즘


10

나는 많은 키워드 조합을 사용하여 이것을 봤지만 놀랍게도 일정한 n면 다각형을 주어진 원으로 구성하는 알고리즘을 찾을 수 없었습니다. 즉, n 코너 포인트 의 좌표를 찾았습니다 . 내가 찾을 수있는 것은 물리적 나침반과 직선 또는 소스가없는 대화 형 브라우저 플러그인으로 수행하는 방법에 대한 지침이었습니다.

그런 알고리즘을 어디에서 찾을 수 있습니까?


2
Google에 대한 믿음을 회복시켜 드리겠습니다. ;-) "알고리즘 정규 다각형"에 대한 네 번째 히트 : gamedev.net/topic/… "그런 다음 기본 삼각법을 사용하여 원 주위에 등거리로 n 개의 포인트를 선택했습니다 (예 : n이 3 인 경우 3 포인트 선택). "둘레는 서로 120도 떨어져 있습니다." 정확히 Kevin의 코드가하는 일입니다.
Eric

답변:


15

i에서가 0 to n-1포함 :

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

편집 : Lars Viklund가 주석에서 언급했듯이 정수 나누기가 정수가 아닌 부동 소수점 숫자를 반환하는 javascript와 같은 언어에서만 안전합니다. 다른 언어에서는 먼저 i플로트로 캐스트 해야합니다.


3
정수를 나누면 정수가 나오는 언어에서 i / n의 정수 나누기 트랩을주의하십시오.
Lars Viklund

아아, 아주 좋은 지적이다. 나는 그 경고에 답을 덧붙일 것이다.
Elva

이것은 말할 필요도 없지만 n * 2 * PI == 0불행한 다각형이 하나 있거나없는 경우에 대비하고 싶을 것입니다. (.
Zack The Human

n * 2 * PI == 0내가 생각할 수 있는 유일한 n이 이상한 오버플로를 막는 것은 0입니다. 내가 아는 한 i / 0과 동일합니다. 그래서 문제 없습니다. :)
Elva
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.