이전 MIP 는 X, Y, Z 방향에서 본 화면 이었다.
이번에는 사용자가 어떤 좌표에서 보고 싶은지 정하면 해당 좌표에서 바라본 MIP를 만들어보자.
개발 순서는 다음과 같다.
- view vector 를 구한다.
- x vector 를 구한다.
- y vector 를 구한다.
- 구한 vector 평면에서 view vector 방향으로 전진하면서 MIP를 구한다.
먼저 이벤트 처리기 구현하자
VolumeRendererDoc.cpp
핵심 함수인 RenderMIPAnyDirection 을 구현하자. 해당 함수에서 3차원 좌표가 자주 사용되므로
이를 구조체로 선언하여 간편하게 쓰도록 하자.
Renderer.h
Renderer.cpp
이제 정규화와 외적 함수를 구현하자. 정규화는 normalize, 외적은 cross 라는 이름으로 사용할 것이다.
정규화함수는 float3 구조체 내에서 선언 후 사용할 것이다. 연산자 오버로딩도 구현해놓자.
Renderer.h
외적구현
Renderer.cpp
실행하면 다음과 같이 나온다.