gpt4 book ai didi

python - 3D 向量的平面方程

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:41 25 4
gpt4 key购买 nike

我想找到一个给定 3 个点的 3D 平面方程。应用叉积后,我得到了法线计算。但是已知平面方程是乘以另一个向量的法线,我被教导为 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 部分。

最佳答案

假设您有三个已知点,每个点都有 (x, y, z)。例如:

p1 = (1, 2, 3)
p2 = (4, 6, 9)
p3 = (12, 11, 9)

把它们变成更容易看的符号,以便进一步处理:

x1, y1, z1 = p1
x2, y2, z2 = p2
x3, y3, z3 = p3

由点确定两个向量:

v1 = [x3 - x1, y3 - y1, z3 - z1]
v2 = [x2 - x1, y2 - y1, z2 - z1]

确定cross product两个向量的:

cp = [v1[1] * v2[2] - v1[2] * v2[1],
v1[2] * v2[0] - v1[0] * v2[2],
v1[0] * v2[1] - v1[1] * v2[0]]

一个平面可以用一个简单的方程式来描述:ax + by + cz = d。叉积的三个系数是abcd可以通过代入a来求解已知点,例如第一个:

a, b, c = cp
d = a * x1 + b * y1 + c * z1

现在做一些有用的事情,比如确定 x=4,y=5 处的 z 值。重新排列简单的方程,并求解 z:

x = 4
y = 5
z = (d - a * x - b * y) / float(c) # z = 6.176470588235294

关于python - 3D 向量的平面方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com