Python 沿任意平面平移三维点

Python 沿任意平面平移三维点,python,3d,vectormath,Python,3d,Vectormath,我正在使用3D PDB坐标。我首先使用numpy.linalg.lstsq来解最小二乘方程,基本上给出了平面的系数(我想)。我可以使用matplotlib查看平面,它似乎是正确的。我希望能够沿着最小二乘解给出的平面平移我的三维坐标。例如,我希望能够在新平面的(X,Y)上平移点。在(0,0,1)为法线的平面上旋转点会更容易吗 如果我理解你的问题是正确的,你有一个固定点,想在一个有法向量的平面上移动它。 假设法向量n为(0,0,1),点p为(1,1,1)。 如果我们想留在平面上,我们的平移向量t必须

我正在使用3D PDB坐标。我首先使用numpy.linalg.lstsq来解最小二乘方程,基本上给出了平面的系数(我想)。我可以使用matplotlib查看平面,它似乎是正确的。我希望能够沿着最小二乘解给出的平面平移我的三维坐标。例如,我希望能够在新平面的(X,Y)上平移点。在(0,0,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=0,t_y在这种情况下是仲裁的,因为方程已经是0了。所以t_x=1和t_z=0的平移向量是t=(1,t_y,0)。 在一般情况下,只需根据需要固定t的任意多个坐标,并使用nt=0方程计算剩余的一个坐标。 这应该不会太难实施。
所以用一句话来说:只要平移向量垂直于法向量(nt=0),你就保持在同一个平面上。

如果我理解你的问题,你有一个固定点,想在有法向量的平面上移动它。 假设法向量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=0,t_y在这种情况下是仲裁的,因为方程已经是0了。所以t_x=1和t_z=0的平移向量是t=(1,t_y,0)。 在一般情况下,只需根据需要固定t的任意多个坐标,并使用nt=0方程计算剩余的一个坐标。 这应该不会太难实施。
因此,用一句话来说:只要平移向量垂直于法向量(nt=0),你就保持在同一平面上。

@prevenert903恐怕我还是不太明白你想要什么,也许另一幅画可能会有所帮助。平面由法向量和该法向量的起点定义。你想移动什么坐标?我有一组(X,Y,Z)坐标,我想沿着平面p平移。我有飞机的法线。我知道我必须垂直于平面的法线进行平移。我正在努力寻找翻译向量并应用翻译。坐标到平面的距离应该保持不变,因此我可以将新平面视为2D,并沿着“p”的(X,Y)移动。好的,在它上面有一个点X和一个平面p“浮动”。你现在想找到一个点x',它的法向距离与x'和p之间的最短距离相同,对吗?如果我错了,请纠正我,但我认为只要过渡向量v是平面p的元素,那就是vn=0。你可以按你喜欢的方式选择v_x、v_y和v_z(根据vn=0),并按你想要的方式将x转换为x。@preoners 903恐怕我还是不太明白你想要什么,也许另一幅画可能会有所帮助。平面由法向量和该法向量的起点定义。你想移动什么坐标?我有一组(X,Y,Z)坐标,我想沿着平面p平移。我有飞机的法线。我知道我必须垂直于平面的法线进行平移。我正在努力寻找翻译向量并应用翻译。坐标到平面的距离应该保持不变,因此我可以将新平面视为2D,并沿着“p”的(X,Y)移动。好的,在它上面有一个点X和一个平面p“浮动”。你现在想找到一个点x',它的法向距离与x'和p之间的最短距离相同,对吗?如果我错了,请纠正我,但我认为只要过渡向量v是平面p的元素,那就是vn=0。您可以选择v_x、v_y和v_z您喜欢的方式(根据vn=0)并将x转换为您想要的方式。