2017-02-06 15 views
-1

下の画像に示すように、点O、A、Bとαを与えられたとき、3D空間内の点Pの位置を取得する方法は?3D空間内の点Pの位置を計算する方法は?

ありがとうございます! enter image description here

+1

これは、数学の問題ではなく、C++の問題であるを取得するためにRodrigues' rotation formulaを使用しています。 – DeiDei

+0

pythagorasの定理、dist = sqrt((x1-x0)^ 2 +(y1-y0)^ 2) 'をとり、ちょうど' z 'の別の項を追加する – user2896976

+0

@ user2896976実際には、Pの位置を計算する必要があります(x、y、z)はdistではなく、円の半径はわかっています – XHLin

答えて

1

レッツ・ベクトル

b = B - O 
a = A - O 
p = P - O 

最も簡単な方法は、ベクトルbとの間SLERP interpolationで使用しているようです。まず は次にSLERP

p = Sin(Omega - Alpha) * b/Sin(Omega) + Sin(Alpha) * a/Sin(Omega) 

別の方法を適用し、Bと(例えば、ドット積によって)ベクトル間の角度オメガを見つける - あなたは(円形平面に垂直)回転軸のベクトルを見つけることができますその後、

k = b x a //vector product 
k = k.Normalized //unit vector 

としてp=P-Oベクトル

+0

あなたの返事をありがとう、私はSLERPが私が必要と思うものだと思う。ところで、私の場合、オメガは90度ですが、どうすればアルファ、aとbの関係を決定できますか?言い換えれば、pは "Sin(Omega - Alpha)* b/Sin(Omega)+ Sin(Alpha)* a/Sin(Omega)"または "Sin(Omega - Alpha)* A/Sin(Omega) + Sin(アルファ)* b/Sin(オメガ)」と表示されます。私は正しい? – XHLin

+0

bからaへのローテーションの場合 - 最初の亜種(鉱山など)。チェックは簡単です - alpha = 0 pはbに等しく、alpha = 90 pはaに等しくなります。 – MBo

+0

それは素晴らしいです。どうもありがとう。 – XHLin

関連する問題