2013-02-20 3 views
1

에 2 × 2 회전 행렬을 구현 :나는 다음과 같은 코드를 사용하여 벡터를 회전 C#을

var newVectorX = Math.Cos(step) * normalizedVector.X 
           - Math.Sin(step) * normalizedVector.Y; 

       var newVectorY = - Math.Sin(step) * (normalizedVector.X) 
           + Math.Cos(step) * normalizedVector.Y; 

내가 그래서 난 그냥 매트릭스 내 정규화 된 벡터를 곱 수있는 2 × 2 행렬을 만들려고. 결과는 좌표 대신 새로운 회전 된 벡터가됩니다.

rotation matrix

불행하게도 System.Windows.Media.Matrix는 2 × 2 행렬을 지원하지 않습니다. 지금까지이 회전 행렬의 구현을 찾을 수 없었습니다. 어떻게 구현할 것인가?

답변

1

실제로 실제로는 System.Windows.Media.Matrix입니다. 2x2 행렬이 필요한 것처럼 보일 수도 있지만 3x3 행렬을 사용하면 변환 할 수 있습니다. System.Windows.Media.Matrix을 사용하고 필요없는 부분은 무시하십시오.

Matrix rotate = Matrix.Identity; 
rotate.Rotate(step * 180/Math.PI); // Rotate() takes degrees 
Vector newVector = rotate.Transform(normalizedVector); 
+0

Matrix.Identity.Rotate가 매트릭스를 반환하지 않습니다. – Goot

+0

@Goot : 당신이 옳습니다. 팁 고마워. – Gabe

+0

솔루션에 대한 내 코멘트를 참조하십시오 – Goot