我在某个空间(x,y,z,w)
中有一组点,我想将其中一个点转换为原点(x', y', z', 1) = (0,0,0,1)
。找到一个点的平移矩阵后,我想将相同的矩阵应用于所有其他点,以便它们被转换为相同的量。
我编写了以下函数来生成翻译矩阵:
def get_translation_matrix4(x,y,z):
return np.array([[1,0,0,x], [0,1,0,y], [0,0,1,z],[0, 0, 0, 1]])
我有一个将平移应用于对象顶点的函数。 data
包含(8, 4)
形状的矩阵,每行都是对象的顶点。
def apply_transform(self, m4):
for i in range(0, len(self.data)):
vertex = self.data[i]
# matrix multiplication
vertex = vertex @ m4
self.data[i] = vertex
self.__init_from_data(self.data)
我试图像这样应用翻译矩阵:
p = myObject.point
distance_to_origin = origin - p
trans_x, trans_y, trans_z, _ = distance_to_origin
translation_mat = get_translation_matrix4(trans_x, trans_y, trans_z)
myObject.apply_transform(translation_mat)
在我的对象上调用apply_transform
之后,在绘制之后,位置没有变化。