Матрица преобразования линейной алгебры — из точки в другую точку путем умножения на матрицу?

Я только знаком с линейной алгеброй, но я пытаюсь сделать перекрестие на графическом приложении, над которым я работаю.

I have a point: (x,y,z)

И я пытаюсь донести это до сути:

(2/(x+y),(5y+z)/(2x+2y),3)

Я читал, и это можно сделать, умножив мою точку на «матрицу преобразования», чтобы получить желаемую точку. Но я не уверен, как это сделать.

Кто-нибудь знает, есть ли шаг за шагом, как добраться до этих координат? Если бы я мог видеть конечный результат, я мог бы попытаться изменить его.

0

Решение

Вы должны добавить однородную координату вес;
Тогда ваши уравнения имеют форму

[x, y, z, w = 1] * [4×4] matrix = [WX, WY, WZ, W],
где, деля на W (которая должна быть (x + y)), вы можете достичь ожидаемого результата …

Итак, вы должны найти матрицу M, которая представляет собой следующие уравнения:

WX = 2,
WY = 2.5y+0.5z,
WZ = 3x+3y,
W  = x+y
0

Другие решения

Вы не можете сделать это напрямую, потому что только линейные преобразования (http://en.wikipedia.org/wiki/Linear_map) могут быть представлены матрицей, а ваше преобразование не является линейным. Что вы можете сделать, это переписать ваше преобразование следующим образом:

(x,y,z,w)->( 2w , 5y/2+z/2 , 3x+3y )

который теперь линейный, и его соответствующее преобразование определяется как:

T(x,y,z,w)=[0  0  0  2; 0  5/2  1/2  0; 3  3  0  0]*(x,y,z,w)

где матрица задается числами между [] и каждая строка отделяется знаком «;». Как видите, теперь у вас есть линейное преобразование, которое не дает нужной вам точки, но если вы оцените свое преобразование по w = 1, а также разделите каждую запись в результирующем векторе на (x + y), то вы иметь результат, который вы хотите достичь. Я имею в виду,

(2/(x+y),(5y+z)/(2x+2y),3) =
[1/(x+y)]*[0  0  0  2; 0  5/2  1/2  0; 3  3  0  0]*(x,y,z,w=1)

Я надеюсь, что это полезно для вас.

0

По вопросам рекламы [email protected]