【问题标题】:Translate 3D points along arbitrary plane沿任意平面平移 3D 点
【发布时间】:2016-05-19 00:56:22
【问题描述】:

我正在使用 3D PDB 坐标。我首先使用 numpy.linalg.lstsq 来求解最小二乘方程,基本上给了我平面的系数(我认为)。我可以使用 matplotlib 查看飞机,它似乎是正确的。我希望能够沿最小二乘解决方案给出的平面平移我的 3D 坐标。例如,我希望能够在新平面的 (X,Y) 上平移点。将点旋转到 (0,0,1) 为法线的平面上会更容易吗?

【问题讨论】:

    标签: python 3d vectormath


    【解决方案1】:

    如果我理解你的问题,你有一个固定点,并且想在你有法线向量的平面上移动它。 假设您的法线向量 n 是 (0,0,1),而您的点 p 是 (1,1,1)。 如果我们想留在平面上,我们的平移向量 t 必须垂直于法线向量。(n*t=0) 其中 * 表示标量积。 你说你想保持 z 不变,所以我们设置 t_z = 0。然后假设你想将你的点移动 t_x = 1。现在你只需要解方程:0*1+0*t_y+1*0=在这种情况下,t_y 的 0 是任意的,因为方程已经是 0。所以 t_x = 1 和 t_z = 0 的平移向量是 t = (1,t_y,0)。 在一般情况下,您只需根据需要固定尽可能多的 t 坐标,然后使用 nt=0 方程计算剩余的坐标。 这应该不难实现。 所以一句话:只要平移向量垂直于你的法向量(nt=0),你就保持在同一个平面上。

    【讨论】:

    • @pioneer903 恐怕我还是不太明白你想要什么,也许另一张图可能会有所帮助。平面由法线向量和该法线向量应开始的一个点定义。你想移动什么坐标?
    • 我有一组 (X,Y,Z) 坐标,我想沿平面“p”平移。我有正常的飞机。我知道我必须垂直于飞机的法线平移。我正在努力寻找翻译向量并应用翻译。坐标到平面的距离应该保持不变,所以我基本上可以将新平面视为 2D 并沿“p”的 (X,Y) 移动。
    • 好的,所以你有一个点 x 和一个平面 p “浮动”在它上面。您现在想要找到一个点 x' 具有相同的正常距离,即 x' 和 p 之间的最短距离与 x 和 p 之间的最短距离,对吧?如果我错了,请纠正我,但我认为只要过渡向量 v 是平面 p 的元素,即 vn=0。您可以按照自己喜欢的方式选择 v_x、v_y 和 v_z(根据 vn=0),并按照您想要的方式将 x 转换为 x'。
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多