计算平移矩阵以将顶点移动到原点

时间:2017-02-06 07:36:33

标签: python numpy matrix linear-algebra

我在某个空间(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之后,在绘制之后,位置没有变化。

0 个答案:

没有答案
相关问题