Graphics 如何将平移应用于坐标向量?
我试图实现并理解如何在GLSL中执行简单的翻译。 为了做到这一点,我正在做一个简单的八度测试,以确保我理解转换本身 以下向量表示嵌入到4维向量中的二维坐标:Graphics 如何将平移应用于坐标向量?,graphics,octave,Graphics,Octave,我试图实现并理解如何在GLSL中执行简单的翻译。 为了做到这一点,我正在做一个简单的八度测试,以确保我理解转换本身 以下向量表示嵌入到4维向量中的二维坐标: candle = [1586266800, 11812, 0, 0] 这意味着该点具有位置x=1586266800和y=11812 我正在尝试使用以下值应用转换: priceBottom = 11800 timestampOrigin = 1586266800 这意味着新的坐标原点将是x=1586266800和y=11800 我构建了以
candle = [1586266800, 11812, 0, 0]
这意味着该点具有位置x=1586266800和y=11812
我正在尝试使用以下值应用转换:
priceBottom = 11800
timestampOrigin = 1586266800
这意味着新的坐标原点将是x=1586266800
和y=11800
我构建了以下翻译矩阵:
[ 1 0 0 tx ]
[ 0 1 0 ty ]
[ 0 0 1 tz ]
[ 0 0 0 1 ]
translation1 = [1, 0, 0, -timestampOrigin; 0, 1, 0, -priceBottom; 0, 0, 1, 0; 0, 0, 0, 1]
这个矩阵正确吗?
如何将其应用于向量
我试过:
>> candle * translation1
ans =
1.5863e+009 1.1812e+004 0.0000e+000 -2.5162e+018
这显然不起作用。你的翻译错了。从数学角度来看,您所追求的转换是: i、 e.您需要使用另一个值为1的维度“扩充”向量,以便在矩阵乘法过程中可以使用它将“平移”信息添加到每一行 所以,如果我正确理解了你的例子
Initial_position = [1586266800; 11812; 0; 0] # note: vertical vector
Augmented_vector = [Initial_position; 1]
Translation_vector = [0 ; -12 ; 0; 0] # note: vertical vector
Transformation = eye(5);
Transformation( 1:4, 5 ) = Translation_vector
Translated_vector = Transformation * Augmented_vector;
Translated_vector = Translated_vector( 1:4, 1 )
我认为OP有一个3D向量已经被放大了,虽然那个地方有一个0而不是1。谢谢,@cris luengo说3D向量已经被放大了,有一个0而不是1。将答案和注释混合在一起可以澄清操作。@cris luengo提出了一个与实际GLSL问题相关的后续问题: