2010-04-15 5 views
2

주어진 2D (!) 벡터를 회전하고 싶습니다. WPF 내장 함수가 있습니까? 현재 내가 수동으로하고 있어요 : WPF : 2D 벡터 회전

 Vector v = new Vector(); 
     v.X = 10; v.Y = 10; 

     Vector v2 = new Vector(); 

     v2.X = v.X * Math.Cos(-90 * 180/Math.PI) - v.Y * Math.Sin(-90 * 180/Math.PI); 
     v2.Y = v.Y * Math.Cos(-90 * 180/Math.PI) + v.X * Math.Sin(-90 * 180/Math.PI); 

내가이 회전 행렬로 주어진 벡터를 곱하여도 가능해야한다고 생각? 어쨌든, 나는 그것을 얻지 못합니다, 누군가 제게 모범을 보일 수 있습니까? 감사!

답변

5

너는 System.Windows.Media.Matrix.Rotate(...)을 봐야한다. 이 방법을 사용하면 고정 된 Vector.Mulitply(...) 메서드 또는 Matrix.Transform(...) 메서드를 사용하여 벡터에 적용 할 수있는 회전 행렬을 만들 수 있습니다.

는 지금까지 Matrix 클래스를 사용한 적이 있지만, 내 첫 번째 아이디어는 다음과 같이 사용하는 것이 었습니다 : Matrix 클래스는 3 × 3 행렬을 사용하는

Matrix m = Matrix.Identity; 
m.Rotate(90); 
Vector v2 = m.Transform(v); 

참고하지만 그것이위한 것입니다 의미하지 않는다 3D. 2D 용입니다 (문서에서 읽을 수있는 것처럼). 추가 매개 변수는 변환을 변형에서 다른 변환과 결합하는 데 사용됩니다. 자세한 내용은 Homogenous coordinates을 참조하십시오.

+0

감사합니다. 결국 Matrix.Rotate (angle)을 사용했습니다. 이 메서드는 void를 반환합니다. –

+0

당신 말이 맞아요. 'Rotate (...)'가 올바르게 사용되도록 코드를 편집했습니다. – gehho