三维矢量的平面方程

2024-09-28 22:12:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找一个三维平面方程给3个点。我得到了应用交叉积后的正常值。但是一个平面的方程是法向量乘以另一个向量,我被教做P.OP,我用主参考点代替OP,我希望P是(x,y,z)形式。这样我就可以得到像这样的东西

OP = (1, 2, 3)

我想得到这样的东西:

(x-1)
(y-2)
(z-3)

我能知道怎么做吗? 下面是我的参考代码(注意:plane_point_1_x()、plane_point_1_y()、plane_point_1_z()都是要求用户输入各个点的函数)

"""
I used Point P as my reference point so I will make use of it in this section
"""

vector_pop_x = int('x') - int(plane_point_1_x())
vector_pop_y = int('y') - int(plane_point_1_y())
vector_pop_z = int('z') - int(plane_point_1_z())

print vector_pop_x, vector_pop_y, vector_pop_z

以上都是我所做的,但不知为什么没有成功。我认为问题出在x,y,z部分。


Tags: 代码用户pop向量交叉形式平面int
3条回答

平面隐式方程:

各点p=(x,y,z)满意

<;nQP>;=0

其中

  • n是平面法向量
  • Q是平面上的某个点(任何点都可以)
  • Q P是从QP的向量
  • <;ab>;是标量(点)乘积运算符。

(请记住,Q p可以计算为p-Q

一个好办法是:

| x1 y1 z2 1 |
| x2 y2 z2 1 |
| x3 y3 z3 1 | = 0
| x  y  z  1 |

其中垂直管道表示矩阵的行列式,而(x1 y1 z1)(x2 y2 z2)(x3 y3 z3)是给定的点。

如果我没弄错的话,这里有一个很好的解决方案就是错误的类型

vector1 = [x2 - x1, y2 - y1, z2 - z1]
vector2 = [x3 - x1, y3 - y1, z3 - z1]

cross_product = [vector1[1] * vector2[2] - vector1[2] * vector2[1], -1 * (vector1[0] * vector2[2] - vector1[2] * vector2[0]), vector1[0] * vector2[1] - vector1[1] * vector2[0]]

a = cross_product[0]
b = cross_product[1]
c = cross_product[2]
d = - (cross_product[0] * x1 + cross_product[1] * y1 + cross_product[2] * z1)

尝试了以前的(作者的)版本,但不得不检查。在公式中再加上几个负数,现在看来是正确的。

相关问题 更多 >