我只熟悉线性代数,但我正在尝试在我正在开发的图形应用程序上做一个十字准线。
I have a point: (x,y,z)
我正试图说明这一点:
(2/(x+y),(5y+z)/(2x+2y),3)
我一直在阅读,可以通过将我的观点乘以“变换矩阵”来获得我想要的观点。但我不知道该怎么做。
有谁知道如何一步一步地让它到达那个坐标?如果我能看到最终结果,我可以尝试扭转它。
我只熟悉线性代数,但我正在尝试在我正在开发的图形应用程序上做一个十字准线。
I have a point: (x,y,z)
我正试图说明这一点:
(2/(x+y),(5y+z)/(2x+2y),3)
我一直在阅读,可以通过将我的观点乘以“变换矩阵”来获得我想要的观点。但我不知道该怎么做。
有谁知道如何一步一步地让它到达那个坐标?如果我能看到最终结果,我可以尝试扭转它。
你必须添加一个齐次坐标w;然后你的方程是形式
[x,y,z,w=1] * [4x4] 矩阵 = [WX,WY,WZ,W],其中除以 W(应该是 (x+y))你也许可以达到预期的结果.. .
因此,您必须找到一个矩阵 M,它表示以下方程:
WX = 2,
WY = 2.5y+0.5z,
WZ = 3x+3y,
W = x+y
您不能直接这样做,因为只有线性变换(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)
我希望这对你有用。