티스토리 뷰
* 이 방법은 Project Ex에서 사용한 방법입니다.
* DirectX에서 랜더링할때 Radian값을 설정해 회전하는 방식으로 했습니다. 공식자체는 다른곳에서 사용해도 무관할듯 합니다.
* 이미지의 중심점을 축으로 회전을 시키는 방식입니다.
- 이미지의 밑변과 높이를 구한다.
높이 = 나중좌표.y - 이미지의 중심점.y;
밑변 = 나중좌표.x - 이미지의 중심점.x;
* 만약 이미지의 밑변이 0이라면 강제적으로 1로 값을 넣어줘야 정확한 회전각이 나옵니다.
회전은 시계방향으로 회전을 하게 됩니다. 따라서 중심을 축으로 왼쪽은 +각도, 오른쪽은 -각도가 나오게 됩니다.(180도 기준)
if(밑변 < 0)
회전각 = 아크탄젠트(높이/밑변) * 180도 / 원주율(3.14);
else
회전각 = 아크탄젠트(높이/밑변) * 180도 / 원주율(3.14) - 180도;
- 부연설명.
* 회전각을 구하는 공식에서 180도를 곱한 이유는, 최대 회전각을 정하기 위해서입니다.360도로 지정해도 상관은 없지만,
계속 회전을 시켜주기 위해서는 180도만큼의 각도를 구하고 +, - 영역으로 나누어 계속 값을 바꿔나가기 위해서입니다.
* else부분에서 -180도를 해준 이유는, 중심을 축으로 왼쪽은+, 오른쪽은-인데 위와 같은 경우와 밑변이 0보다 클 경우에는
오른쪽으로 회전이 되지 않기때문에 보정을 해 주는 것 입니다.
'Programming > 수학&물리' 카테고리의 다른 글
두 원의 충돌(원과 점의 충돌) (0) | 2015.11.21 |
---|---|
점과 직선사의 거리 (0) | 2015.11.21 |
캐릭터를 마우스 좌표로 부드럽게 이동시켜보자. (0) | 2015.01.07 |
직선의 회전운동!(점2개와 각도를 알고있을때) (0) | 2015.01.07 |
[C++]MagicSquare programming : 마방진 (0) | 2014.09.18 |