2010-05-24 2 views
0

이것은 3d n00b 질문입니다.3D 비행기의 어느 쪽이 보이는지 확인하는 방법은 무엇입니까?

Silverlight의 PerspectiveTransform 기능의 기본을 구현하는 WPF 컨트롤에서 작업 중이므로 2D 평면이 세 축 중 하나에서 회전 할 수 있습니다. 그것은 꽤 잘 작동합니다. 그러나 저는 비행기의 뒷면이 보이는지 여부를 결정하는 데 필요한 수학에 조금 갇혀 있습니다. 지금을 파악 대한 나의 순진 코드는 다음과 같습니다

bool isBackShowing = Math.Abs(RotationX) > 90 && Math.Abs(RotationY) < 90; 
if (!isBackShowing) 
{ 
    isBackShowing = Math.Abs(RotationX) < 90 && Math.Abs(RotationY) > 90; 
} 

그러나,이 회전이 -270 + 사이 + -360 두 축에있을 때 실패합니다.

기본 변형은 Quaternion 객체를 사용하여 실제 회전을 수행하며 멋진 Axis 및 Angle 속성을 가지고 있으므로 어떻게 사용했는지를 추측 할 수 있습니다.

답변

5

평면 법선과 뷰 방향의 내적을 수행해야합니다.

긍정적 인면 비행기가 나와 마주하고 있습니다.

음수이면 비행기가 앞으로 오게됩니다.

0이면 비행기 가장자리가 보입니다.

비행기 정상을 찾으려면 비행기에서 3 점을 가져옵니다. OA와 B로 호출 할 수 있습니다. O에서 A와 O에서 B로 벡터를 가져옵니다.이 두 벡터의 교차 곱을 취하면 정상. 당신이 계산을하는 순서가 중요하므로주의하십시오. 3D 지오메트리에 좋은 책/웹 사이트는 귀중한 도움이 될 것입니다

Wikipedia

+0

그냥 이것 못하고, 지연 죄송합니다. 어리석은 질문이지만 비행기가 정상적으로 보이려면 어떻게해야합니까? 나는 시야 방향이있다. –

관련 문제