0

WPF 변환 클래스에 대한 나의 이해는 Matrix 클래스 represents a 3x3 row-major matrix of 2D homogenised coordinates where the final column is always(0,0,1)입니다. 이 디자인의 이유는 2x2 행렬을 사용하는 경우 벡터와는 별도로 변환하지 않고 변환을 회전, 크기 조정 및 기울이기와 같은 방식으로 변환을 행렬 곱셈으로 쉽게 사용할 수 있다는 것을 이해합니다.Vector.Multiply는 행렬의 오프셋 값을 무시합니다.

내 기대 따라서 번역이 포함 된 매트릭스로 multiplyingVector 때 내 기대 그러므로, 결과 벡터 번역해야합니다. WPF 행렬 클래스를 사용할 때 이런 일이 일어나지 않는 것 같습니다. 그래서 내가 뭘 잘못하고있는 걸까요?

Matrix m = new Matrix(); 
m.Translate(12, 34); 

Vector v = new Vector(100, 200); 
Vector r = Vector.Multiply(v, m); 

// Confirm that the matrix was translated correctly 
Debug.WriteLine(m); 

// Confirm that the vector has been translated 
Debug.WriteLine(r); 

결과 :

1,0,0,1,12,34 // Matrix contains translation as expected 
100,200   // Vector is unchanged - not expected 

답변

1

는 지금 참조하십시오. VectorPoint을 구별하는 것이 중요합니다. 대신 Points와 Point.Multiply를 사용해야하며 그 결과는 내가 기대했던 것입니다. 벡터는 번역에 영향을받지 않는 두 점의 차이이며 점은 영향을받는 특정 위치입니다.

+0

그래, 그렇지만 자신의 질문에 답하는 것이 즐겁지 않습니까? –

+0

예, 좋습니다. 그것은 다른 사람들이 시간을 허비하지 않고 다른 사람들이 같은 문제를 겪을 때 도움이됩니다. –

관련 문제