onlybooks / gamemath

<이득우의 게임 수학> 공식 깃허브 페이지
MIT License
178 stars 75 forks source link

책 479페이지 13-3 번 실습 예제 SoftRenderer3D.cpp 파일 업데이트가 필요합니다. #15

Open Time7Portal opened 2 years ago

Time7Portal commented 2 years ago

책 479페이지 13-3 번 실습 예제 gamemath-13-3/Source/Player/SoftRenderer3D.cpp 에서

// 절두체 선언
Frustum frustumInView(frustumPlanes);

으로 되어있지만 책에서는 frustumFromMatrix 라는 이름으로 사용한 것으로 보입니다.

13-3c 브랜치에는 정상적으로 frustumFromMatrix 로 등록되어 있는 것으로 보아 실수로 이름 업데이트를 누락하신 것으로 사료됩니다. 감사합니다.


Q. 추가적으로 질문이 있습니다. 책 468 페이지에서 원근 투영 행렬의 행벡터를 계산한 4차원 벡터를 (a, b, c, d)로 표시했을 때 이를 뷰 공간의 점 (x, y, z, 1)과 내적한 결과 는 평면의 방정식과 형태가 동일하다는 내용이 있습니다만, 원근 투영 행령의 행벡터들이 어떻게 평면의 방정식의 a, b, c, d (특히 d 의 경우) 가 될 수 있는지 잘 모르겠습니다..

ideugu commented 2 years ago

제보 감사합니다! 질문부터 답변드리면 임의의 방정식 ax+by+cz+d=0은 3차원 공간의 어떤 평면을 나타냅니다. 우리가 y=ax+b의 방정식을 보면 바로 평면상의 어떤 직선에 대응할 수 있는 것 처럼요. 따라서 뷰 공간의 점을 미지수로 잡고 어떤 4차원 벡터와 내적하면 3차원 공간의 정규화되지 않은 어떤 평면에 항상 대응됩니다