numpy 在给定平面法线的情况下,沿平面移动顶点

xjreopfe  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(163)

我有一个3D矢量和一个3D面法线。如何使用Python(使用或不使用NumPy)沿给定面法线移动该向量?
理想情况下,我会使用面法线与xy构建一个矩阵,然后将其乘以原始向量或类似的东西,但我不知道如何构建它。《线性代数》问世已经有一段时间了。
编辑:
谢谢你指出我的问题太宽泛了。
我的目标是得到一个新的点,即xy单位远离原始点,沿其法线定义的面。
例如:如果点为(0,0,0),法线为(0, 0, 1),则结果为(x, y, 0)
示例2:如果点为(1, 0, 0),法线为(0, 1, 0),则结果为(1+x, 0, y)
我需要对任何pointnormalxy进行外推。

lf5gs5x2

lf5gs5x21#

vector到由其normal定义的平面的The projection为:

def projection(vector, normal):
    return vector - vector.dot(normal) * normal

这大概意味着你想要这样的东西:

x + projection(y, normal)
f5emj3cl

f5emj3cl2#

def give_me_a_new_vertex_position_along_normal(old_vertex_position, normal):
  new_vertex_position = old_vertex_position + normal
  return new_vertex_position

仿射空间(您的法线)和欧几里得/线性空间(您的顶点)之间存在差异。
线性空间中的矢量具有关联的坐标,而仿射空间中的矢量没有关联的坐标。
将仿射间隔向量与线性间隔向量相加称为投影,这就是您要做的事情。

相关问题