質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6669閲覧

Pythonで平面の方程式と法線ベクトルから3次元のグラフに正しく表示させたい

Takashi1019

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/08/26 07:22

編集2021/08/26 08:49

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 垂直になっているようには見えません

イメージ説明
画像2


以下追記
イメージ説明
スケールを合わせた結果

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2021/08/26 08:33

x, y, zのスケールがバラバラなので垂直に見えないだけではないでしょうか。
Takashi1019

2021/08/26 08:50

仰る通りでした。 簡単なことに気づかず、ずっと考えてしまっていました。 ありがとうございます。 ベストアンサーとさせていただきたいのでなんでもいいので回答、よろしくお願いいたします。
guest

回答1

0

ベストアンサー

x, y, zのスケールが異なっているので、垂直に見えないだけと思われます。

投稿2021/08/26 08:58

bsdfan

総合スコア4560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問