2014-12-26 1 views
0

좋은 소식!WPF에서 올바른 광고 게시 동작을 구현할 수 없습니다.

필자는 pixelate 스킨을 사용하여 큐브 헤드 괴물을 만들기 위해 WPF에서 간단한 모델 편집기를 만들고 빌보드를 추가하고 싶습니다.

그래서,

Vector3D unitZ = new Vector3D(0, 0, 1); 
Vector3D direction = -this.camera.LookDirection; 
double yaw = Vector3D.AngleBetween(unitZ, new Vector3D(0, 0, direction.Z)); 

을하고 무엇을 비행기에 회전을 적용합니다. AngleBetween 함수는 반쪽에서만 작동하지만 양수 값을 반환합니다. 부모 모양을 -45도까지 회전하면 AngleBetween이 45를 반환하고 부모 회전을 몰살시킵니다. 하지만 부모를 45도 각도로 회전 시키면 AngleBetween이 다시 45를 반환하고 결과에서 90도 회전합니다.

모든 솔루션?

그리고 한 가지 더 : 프레임 워크 또는 툴킷을 제공하지 마십시오. 감사.

답변

0

글쎄, 그게 어떻게 AngleBetween 방법은 WPF에서 3D 벡터 작동합니다. [0..180] 범위의 값을 반환합니다.

귀하의 문제가 해결 될 때까지 나는 귀하를 100 % 이해하지 못했습니다. [0, 0, 1][0, 0, arbitrary number here] 사이의 각도는 당신에게 세 가지 다른 값을 제공 할 수 있습니다 : 가능한 서명하면 불가능

  • 180
  • 0
  • -180을 계산합니다.

난 정말 당신이 이제까지 45

어느 쪽이든을 얻을 수있는 방법이 표시되지 않습니다, 그것은 당신이 기호를 유지해야 Vector.AngleBetween를 사용할 수있는 가능성이 있습니다. 회전이 한 축에만있는 경우 작동합니다 (예 : 구성 요소 중 하나가 동일하게 유지됨). 즉, 사용자의 요구에 맞게하지 않는 경우

, 당신은 당신이 필요로 작성해야 : Signed angle between two 3D vectors with same origin within the same plane

+0

그래 ... 나는 그것을 해결 해요. 그러나 "해결"은 잘못된 세계 일 것입니다. 첫 번째 문제는 AngleBetween 메서드에 있었지만 버그는 사라 졌다고 생각합니다. 나는 무엇이 잘못되었는지 말할 수 없기 때문에이 질문을 끝내십시오. 그리고 대답에 감사드립니다! –

관련 문제