沿任意平面平移3D点

时间:2016-02-09 06:26:03

标签: python 3d vectormath

我正在使用3D PDB坐标。我首先使用numpy.linalg.lstsq来解决最小二乘方程,基本上给出了平面的系数(我认为)。我可以使用matplotlib查看飞机,看起来是正确的。我希望能够沿着最小二乘解决方案给出的平面转换我的3D坐标。例如,我希望能够转换新平面的(X,Y)中的点。是否更容易将点旋转到平面(0,0,1)是正常的平面? My poor illustration of what I'm trying to accomplish

1 个答案:

答案 0 :(得分: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 =在这种情况下,t_y的0是任意的,因为方程已经是0.所以你的t_x = 1和t_z = 0的平移向量是t =(1,t_y,0)。 在一般情况下,您只需根据需要修复t的坐标,并使用n t = 0等式计算剩余的坐标。 这不应该太难实现。 所以在一个句子中:只要平移向量垂直于法向量(n t = 0),你就会保持在同一个平面上。