Pythonで以下の平面の方程式と法線ベクトルから三次元の座標(x,y,z)に表示させたいのですが自分の思った通りにできません。わかる方よろしくお願いいたします。
・平面の方程式
0.47384576X+0.81526163Y+0.33289439Z=485.5651127
・法線ベクトル n
上記式からn=(0.47384576, 0.81526163, 0.33289439)
・平面を通る点(P1とすると)
P1=(271.8652135, 419.0413591, 45.40356624)
平面と法線ベクトルを表示することはできたのですが、画像1,2のように平面に対して法線ベクトルが垂直ではないように見えます。
以下のコード、もしくは式で何が間違えているのでしょうか。自分ではわからないので教えていただきたいです。
Python
1import numpy as np 2import matplotlib.pyplot as plt 3from mpl_toolkits.mplot3d import Axes3D 4# (x,y)データを作成 5a=0.47384576 6b=0.81526163 7c=0.33289439 8h=485.5651127 9 10#こちらの事情によりx,yの範囲は以下のようにしています。 11x = np.linspace(267, 277, 10) 12y = np.linspace(416, 422, 10) 13 14# 格子点を作成 15X, Y = np.meshgrid(x, y) 16# Zの作成 17Z = (h-a*X-b*Y)/c 18 19# 3Dでプロット 20fig = plt.figure() 21ax = Axes3D(fig) 22mean_x=271.8652135 23mean_y=419.0413591 24mean_z=45.40356624 25 26ax.scatter(mean_x, mean_y, mean_z,s = 10, c = "green") 27ax.plot_surface(X, Y, Z, color="tomato",antialiased=False, alpha=0.3) 28ax.quiver(mean_x, mean_y, mean_z,a, b,c,color = "red", length = 1) 29 30# 軸ラベル 31ax.set_xlabel('x') 32ax.set_ylabel('y') 33ax.set_zlabel('z') 34 35# 描画 36plt.show() 37
結果の画像です。
二つの角度から見た画像をあげています。
画像1 垂直になっているようには見えません
回答1件
あなたの回答
tips
プレビュー