개인 프로젝트를 진행하다가 원을 그려야할 일이 생겨서 삼각함수를 이용하였다.
후에 누군가에게 도움이 될 수 있으면 좋겠다는 생각으로 한번 정리해본다.
설명
원을 그리고 싶다는 것은 위 그림에서 θ가 0일때부터 360일때 까지의 점 p를 알고 싶다는 말과 같다.
각 앵글값일때의 점p는 위에서 나온 공식
sin(θ) = y / d == y = sin(θ) * d
cos(θ) = x / d == x = cos(θ) * d
으로 구할 수있다.
다만 구해진 원은 d값을 반지름으로 하는 원일 것이다.
또 C++에서 구현할때에는 앵글값을 0 ~ 360 까지 사용하는 것이 아니라 라디안으로 변환한 값을 사용해야한다.
코드는 아래와 같다.
1 2 3 4 5 6 7 8 | for (int angle = 0; angle <= 360; angle++) { // getPosition을 더한 것은 현재 오브젝트 위치에서 그리기 위함이다. int x = (cos(CC_DEGREES_TO_RADIANS(angle)) * m_fBoundingRadius) + getPosition().x; int y = (sin(CC_DEGREES_TO_RADIANS(angle)) * m_fBoundingRadius) + getPosition().y; // 구한 점과 오브젝트 포지션의 점을 이어주는 선을 그린다. DrawDebugLine(getPosition(), Point(x, y)); } | cs |
'All > Algorithm' 카테고리의 다른 글
큰 수 구하기 (0) | 2016.03.15 |
---|---|
자동적에이전트 - Arrive (0) | 2016.02.22 |
자동적에이전트 - Flee (0) | 2016.02.21 |
피벗설정에 따른 퀵정렬의 속도 (0) | 2016.01.18 |
자동적에이전트 - Seek (0) | 2016.01.17 |