Chcę wykonać rysunek 2D, a tym samym chcę zaimplementować niektóre przekształcenia macierzy. Przy moim lekkim tle matematyki próbuję zrozumieć, jak to zrobić w języku C# (jakikolwiek inny język oop oczywiście to zrobi).Dlaczego transformacje 2D wymagają macierzy 3x3?
Wszystko, co czytam, wyjaśnia, że musimy pracować z macierzami 3x3, aby móc poradzić sobie z tłumaczeniami. Ponieważ nie można dokonać tłumaczenia za pomocą multiplikacji. Ale dzieje się tak w przypadku multiplikacji macierzy, w których tworzymy nasze transformacje. Więc pracujemy z czymś takim:
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
Rozumiem średnią z trzeciej kolumny, ale dlaczego musimy trzeci wiersz? W macierzy tożsamości, jak również w obrocie, skali lub obrocie ostatni wiersz jest taki sam. Czy są operacje, których jeszcze nie osiągnąłem, które będą potrzebne? Czy to dlatego, że niektóre języki (Java) działają lepiej w przypadku macierzy "kwadratów wymiarów"? Jeśli tak, mogę użyć 3 kolumn i 2 wierszy w C# (ponieważ poszarpane tablice działają równie dobrze lub lepiej).
Na przykład na tłumaczeniu rotacja + mam matrycę jak ten
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
bez konieczności ostatnim rzędzie.
Zacznij czytać pod adresem http://en.wikipedia.org/wiki/Translation_(geometry), a następnie podążaj jednym z linków do http://en.wikipedia.org/wiki/Homogeneous_coordinates –
@HighPerformanceMark Jestem tutaj próbując wyjaśnić, który punkt tych pojęć nie rozumiem. Tak, to są 2 pierwsze dokumenty, z którymi zacząłem czytać. –