일부 2D 드로잉을하고 싶기 때문에 일부 매트릭스 변형을 구현하려고합니다. 내 가벼운 수학 배경으로 나는 C#에서 그렇게하는 법을 이해하려고 노력하고있다. (다른 모든 언어는 분명히 그것을 할 것이다.)왜 2D 변환에는 3x3 행렬이 필요합니까?
필자가 읽은 것은 번역에 대처할 수 있도록 3x3 행렬로 작업해야한다고 설명했습니다. 왜냐하면 곱셈을 사용하여 번역을 할 수 없기 때문입니다. 그러나 이것은 우리가 변환을 만드는 행렬의 곱셈과 함께합니다. 그래서 우리는 다음과 같이 작업합니다 :
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
제 3 열의 의미는 알지만 세 번째 행이 필요한 이유는 무엇입니까? 항등 행렬뿐만 아니라 회전, 축척 또는 회전에서도 마지막 행은 동일합니다. 아직 도달하지 못한 작업이 필요합니까? 일부 언어 (Java)가 "제곱 된 차원"배열을 사용하면 더 잘 수행됩니까? 그렇다면 C#에서 3 열 및 2 행을 사용할 수 있습니다 (가변 배열은 잘 작동하므로 더 좋음).
예를 들어, 회전 + 번역을 위해 나는이
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
마지막 행의 필요 없음 같은 매트릭스를 가지고있다.
http://en.wikipedia.org/wiki/Translation_(geometry)에서 읽기를 시작한 다음 http://en.wikipedia.org/wiki/Homogeneous_coordinates –
의 링크 중 하나를 따르십시오. @HighPerformanceMark 여기 있습니다 이 개념들의 어느 부분을 내가 이해하지 못하는지를 설명하려 노력했다. 네, 저는이 책을 읽고 시작한 2 권의 첫 번째 문서입니다. –