やりたいこと
三次元の散布図をプロットした際に、特定のプロットを原点を中心にz軸上に回転運動し、それに伴い他のプロットも同様の回転運動をさせるプログラムを作成したいのですが、見当がつきませんでした
申し訳ございません、表記が抽象的でしたので追記です
(x,y,z)=(-3,3,5)の点における原点からの距離をrとしたときに
(x',y',z')=(0,0,r)という座標に変換を行いたい、それにともなった他のプロットの移動を行いたいということです
python
1import numpy as np 2X = [0, 1, -3, 5] 3Y = [0, -10, 3, 10] 4Z = [0, 5, 5, -10] 5#原点を中心に(x,y,z)=(-3,3,5)のプロットをz軸上に回転移動したい 6#ほかのプロットも同様の回転移動をさせたい 7import matplotlib.pyplot as plt 8 9from mpl_toolkits.mplot3d import Axes3D 10 11fig = plt.figure() 12ax = Axes3D(fig) 13 14ax.set_xlabel("X") 15ax.set_ylabel("Y") 16ax.set_zlabel("Z") 17 18ax.plot(X,Y,Z,marker="o",linestyle='None') 19 20plt.show()
調べたこと
クォータニオンによるオイラー角への変換などが調べると出てきますが、理解が及びませんでした
z 軸回りの回転ということですか?
説明不足で申し訳ございません
z軸周りの回転ではありません
(x,y,z)=(-3,3,5)の点における原点からの距離をrとしたときに
(x',y',z')=(0,0,r)という座標に変換を行いたい、ということでございます
もう1点ないとZ'軸回転が可能なため一意に求まりません。
逆を考えた方が分かりやすいかも知れません。
(0,0,r)の座標を回転して(-3,3,5)と合うように回転したとします。その場合、(0,0,0)と(-3,3,5)結ぶ線を軸として回転した任意の座標系は前提条件を満たします。
yymt様
ありがとうございます。
この場合ですと、(0,0,r)と(-3,3,5)を結ぶ線に直交する原点を通る軸に対して回転運動を行えばよいということでしょうか。
そのような回転であれば、他の点における同様な回転運動が可能であると思いました。
(-3,3,5)から(0,0,r)に対する変換は無限にあるので、もう1点決めないと決まらないという話です。どれか一つでよいということであれば、適当に決めれば良いです。
yymmt様
ご回答ありがとうございます。
確かに(-3,3,5)から(0,0,r)に対する変換は無限にあることが理解できました。
今回は原点に存在する点を固定したいので、もう一点を原点としてみます。
早速のご回答誠にありがとうございます。
回答1件
あなたの回答
tips
プレビュー