【发布时间】:2016-05-19 00:56:22
【问题描述】:
我正在使用 3D PDB 坐标。我首先使用 numpy.linalg.lstsq 来求解最小二乘方程,基本上给了我平面的系数(我认为)。我可以使用 matplotlib 查看飞机,它似乎是正确的。我希望能够沿最小二乘解决方案给出的平面平移我的 3D 坐标。例如,我希望能够在新平面的 (X,Y) 上平移点。将点旋转到 (0,0,1) 为法线的平面上会更容易吗?
【问题讨论】:
标签: python 3d vectormath
我正在使用 3D PDB 坐标。我首先使用 numpy.linalg.lstsq 来求解最小二乘方程,基本上给了我平面的系数(我认为)。我可以使用 matplotlib 查看飞机,它似乎是正确的。我希望能够沿最小二乘解决方案给出的平面平移我的 3D 坐标。例如,我希望能够在新平面的 (X,Y) 上平移点。将点旋转到 (0,0,1) 为法线的平面上会更容易吗?
【问题讨论】:
标签: python 3d vectormath
如果我理解你的问题,你有一个固定点,并且想在你有法线向量的平面上移动它。 假设您的法线向量 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),你就保持在同一个平面上。
【讨论】: