2010-06-14 3 views
0

위와 벡터의 뱅크 (롤) 각도를 계산하는 공식을 알아낼 수는 없지만이 각도는 lookat 벡터에 수직 인 평면에서 측정해야한다고 생각합니다. 어떤 힌트도 감사합니다. 참고 저는 WPF를 사용합니다.위쪽 벡터에서 뱅크 각을보고 벡터를 본다?

동일한 문제가 있지만 수학을 사용하여 표현한 another question here을 게시했습니다.

답변

0

이것은 은행을 결정하는 마지막 코드입니다. 각도의 부호를 결정해야한다는 것을 유의하십시오.

// project Y on plan perpendicular to look 
Vector3D Yproj = new Vector3D(
    -(lookDirection.Y * lookDirection.X), 
    1 - (lookDirection.Y * lookDirection.Y), 
    -(lookDirection.Y * lookDirection.Z)); 
Yproj.Normalize(); 

// get absolute angle between Y projected and Up 
double absAngle = Vector3D.AngleBetween(upDirection, Yproj); 

// magic formula 
Vector3D cross = Vector3D.CrossProduct(upDirection, Yproj); 
double dot = Vector3D.DotProduct(lookDirection, cross); 

// set actual signed angle 
BDeg = (dot >= 0) ? absAngle : -absAngle; 
관련 문제