【问题标题】:Plane fitting through points in 3D using python使用python通过3D点进行平面拟合
【发布时间】:2023-04-03 07:42:01
【问题描述】:

我在 3D 空间中有点。

       X        Y       Z
0   0.61853 0.52390 0.26304
1   0.61843 0.52415 0.26297 
2   0.62292 0.52552 0.26108 
3   0.62681 0.51726 0.25622 
4   0.62772 0.51610 0.25903 

我已经通过应该垂直划分这些点的点定义了一个平面,但它不是垂直或水平划分它们。平面和点在我绘制它们时相距甚远。

def plane_equation(x1, y1, z1, x2, y2, z2, x3, y3, z3):
    a1 = x2 - x1 
    b1 = y2 - y1 
    c1 = z2 - z1 
    a2 = x3 - x1 
    b2 = y3 - y1 
    c2 = z3 - z1 
    a = b1 * c2 - b2 * c1 
    b = a2 * c1 - a1 * c2 
    c = a1 * b2 - b1 * a2 
    d = (- a * x1 - b * y1 - c * z1) 
    return a, b, c, d

# Finding the equation of the plane
a, b, c, d = plane_equation(x0, y0, z0, x1, y1, z1, x2, y2, z2)
print("equation of plane is ", a, "x +", b, "y +", c, "z +", d, "= 0.")

x = np.arange(0, 1, 0.1)
y = np.arange(0, 1, 0.1)

X,Y = np.meshgrid(x,y)
Z = a*X + b*Y + d

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(df.x, df.y, df.z, color = 'c', marker = 'o', alpha = 0.5)
surf = ax.plot_surface(X, Y, Z)

equation of plane is  -0.0002496952000000007 x + 0.00036812320000000016 y + 0.0007697304000000002 z + -0.00024088567529317268 = 0.

我需要飞机通过这些点并且应该在垂直方向。蓝色平面应通过青色点,平面应垂直。

【问题讨论】:

  • 在此处提供您尝试的代码。不要指望 Stack Overflow 上的人会为你写下整个代码
  • @Spektre:看,这就是我要求提供代码的原因。你、我和其他人会不断猜测
  • @Spektre 我没有得到规范化向量的想法。
  • @Spektre 这就是我为点选择所做的我已经从平面方程的数据框中选择了第一个点、最后一个点和点的中点。
  • @Spektre 我明白你的意思。我正在努力解决所有问题。

标签:
python-3.x
matplotlib
geometry