본문 바로가기

3.구현/VC++

[회전변환] MFC 회전하는 공

[회전변환] MFC 회전하는 공

작성자: Ospace (ospace114@empal.com)

이 예제는 원이 특정한 점을 기준으로 회전하는 것이다.

회전 변화이라는 수식을 사용했다.

$$ \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} cos \theta & -sin \theta \\ sin \theta & cos \theta \end{pmatrix} \begin{pmatrix} x - x_c \\ y - y_c \end{pmatrix} $$

위의 수식이 회전변화 수식이다. 배열이기에 조금만 하면 이해하기는 쉽다.

실제 결과는 아래 그림과 같다.

아래는 이를 사용한 예제 소스이다. 회전 변환 외에 더블 버퍼링과 영역선택등을 사용했으니 참고하길 바란다.

RotateBall.zip
26.3 kB

마지막으로 더블 버퍼링에 의해서 화면에 다시 그려지는데 화면이 찟어지는 현상이 발생한다. 이에 대해서

http://myhome.hanafos.com/~kukdas/doc/dx/directx2.html

에서 언급하고 있다.
이곳에서 설명은 화면에 주사하는 속도가 1초에 70회 정도 그려지는데, 그려지는 중간에 비디오 메모리가 변경된다면 일그려지는 듯한 모양이 보인다.

이부분이 MFC에 처리 속도로 인해 병목현상이 발생해서 그러는가 해서 win32로 작성해도 마찬가지이다.
아니면 현재 컨트롤이 화면에 그려지는 원외에 버튼과 스태틱 텍스트가 같이 있어서 그런가해서 이부분을 화면에서 갱신되는 부분을 제외(영역선택)하여 했는데도 마찬가지이다.

방법이 안보인다. 눈에 조금 거슬린다.

반응형