У меня нормаль плоскости и лежащая на ней точка.Я пытаюсь изобразить оба из них, но я не думаю, что это получается правильно, и я не могу понять, почему.Вот мой код
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
point = np.array([1309.66102863, -531.22959263, 341.89779288])
normal = np.array([ 80.60165306, -32.69394323, 21.04172506])
# a plane is a*x+b*y+c*z+d=0
# [a,b,c] is the normal. Thus, we have to calculate
# d and we're set
d = -point.dot(normal)
# create x,y
xx, yy = np.meshgrid(range(1200,1400), range(-600,-400))
# calculate corresponding z
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, alpha=0.2)
plt3d.plot([point[0], point[0]+normal[0]],
[point[1], point[1]+normal[1]],
[point[2], point[2]+normal[2]])
plt.show()
Я изменил его с этой записи.Результат, который я получаю, выглядит следующим образом -
Очевидно, что нормаль не перпендикулярна плоскости.
Однако иногда это работает, например, когда я устанавливаю
point = np.array([1, 2, 3])
normal = np.array([1, 1, 2])
График, который я получаю,
Очевидно, что это намного лучше.Как это не работает в первом случае?