我有一个二维点的变换矩阵,因此它有一个形状(3,3)。例如:
array([[2., 0., 0.],
[0., 2., 0.],
[0., 0., 1.]])编辑:,这只是一个例子。实际转换可以包含转换,因此必须具有此大小。
我有一个带有形状的2D点的列表(,2),我想用变换矩阵进行变换。
乘法应该用左边的矩阵。所以
my_matrix @ my_point我想要让这件事在numpy中发挥作用,我需要两件事:
添加z值1使所有2d点都是三维的。
我怎么能用一种简单的方法来处理这个问题呢?
结果应该是一个2d点的列表,类似于输入。因此,伪代码可能类似于:
(matrix @ points.T.add_z_dimension()).T[:-1]将转置点添加为1的z维,执行转换,将其转换回并切片z维。
谢谢!
发布于 2022-10-11 13:06:29
假设矩阵是M,而向量列表是v,最简单的解决方案是:
(M @ np.hstack((v, np.ones((v.shape[0], 1)))).T).T[..., :2]发布于 2022-10-11 13:08:04
如果您想要准确地执行所描述的操作,可以在numpy.pad模式下使用值为1的'constant'函数。
padded_points = numpy.pad(points, [(0, 0), (0, 1)], mode='constant', constant_values=1)另一种选择是叠加一个向量。
padded_points = numpy.hstack([points, numpy.ones((points.shape[0], 1))])但你的转变似乎不太自然。如果z维不依赖,则应该考虑转换矩阵my_matrix[:2, :2]的裁剪版本。
https://stackoverflow.com/questions/74028437
复制相似问题