Как определить плоскость с 3 точками и построить ее в 3D?

У меня есть 3 точки в трехмерном пространстве, и я хочу определить плоскость, проходящую через эти точки в трехмерном пространстве.

      X       Y       Z
0   0.65612 0.53440 0.24175
1   0.62279 0.51946 0.25744
2   0.61216 0.53959 0.26394

Также мне нужно построить это в трехмерном пространстве.


person Upriser    schedule 10.12.2018    source источник


Ответы (1)


Вы определяете плоскость векторно с помощью нормали и точки. Чтобы найти нормаль, вы вычисляете векторное произведение двух векторов, заданных тремя точками.

Затем вы используете эту нормаль и одну из точек для размещения плоскости в пространстве.

Используя матплотлиб:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

points = [[0.65612, 0.53440, 0.24175],
           [0.62279, 0.51946, 0.25744],
           [0.61216, 0.53959, 0.26394]]

p0, p1, p2 = points
x0, y0, z0 = p0
x1, y1, z1 = p1
x2, y2, z2 = p2

ux, uy, uz = u = [x1-x0, y1-y0, z1-z0]
vx, vy, vz = v = [x2-x0, y2-y0, z2-z0]

u_cross_v = [uy*vz-uz*vy, uz*vx-ux*vz, ux*vy-uy*vx]

point  = np.array(p0)
normal = np.array(u_cross_v)

d = -point.dot(normal)

xx, yy = np.meshgrid(range(10), range(10))

z = (-normal[0] * xx - normal[1] * yy - d) * 1. / normal[2]

# plot the surface
plt3d = plt.figure().gca(projection='3d')
plt3d.plot_surface(xx, yy, z)
plt.show()

введите описание изображения здесь

другие полезные ответы:
Matplotlib - постройте плоскость и точки в 3D одновременно
Построить плоскость на основе вектора нормали и точки в Matlab или matplotlib

person Reblochon Masque    schedule 10.12.2018
comment
Есть ли способ сделать это xx, yy = np.meshgrid(range(10), range(10)) в диапазоне (0 и 1)?? а также визуализировать векторы и нормали? - person Upriser; 10.12.2018