2010-10-05 21 views
3

我想繪製位於單位球面(r = 1)表面的實時三維點。使用兩個自旋向量中的點對球體上的x,y,z座標進行插值?

有兩個旋轉矢量在這裏工作。一個矢量圍繞Y軸旋轉,它是X和Z值是使用完全位於X/Z平面上的圓的cos()和sin()計算出來的,其中所有Y值都等於0。 X軸,它是使用完全位於Z/Y平面上的圓的cos()和sin()計算出的Z值和Y值,所有X值都等於0.兩個向量的角動量通常不是相同。然而,矢量的端點位於半徑等於1的共同球體的表面上。因此它們具有相同的大小,並且都起源於相同的0,0,0點。

假設第一個矢量有一個角動量項angXZ和第二個angZY。這意味着我可以隨時計算兩個點,一個用於每個旋轉矢量,使用angXY和angZY。對於這兩個三維點,計算第三個點的公式是什麼?這個公式也將位於單位球面上,並且是從angXZ和angZY計算的兩點之間的正確插值?

我可以在我的腦海中看到,給定位於單位球體表面上的任意兩個三維點,只有一個圓形(平面),它們的圓周都會位於上面。我也可以直觀地認爲,計算插值點的座標歸結爲當投影到它們共有圓周的圓上時將兩個計算點創建的角平分。但是我無法將我的頭圍繞在翻譯和數學上。

是否有一個簡單的公式,需要位於單位球體表面上的兩個三維點,計算第三個點也將位於該表面上,並且是前兩個點之間的正確插值?

我正在使用Delphi Pro 6,如果這很重要。

後續:看起來很直觀,我應該能夠從這對自旋向量計算出的兩點的線性中點,並將該點投影到單位球面上。例如,下面鏈接中的公式給出了計算任意兩個3D點之間中點的公式。那麼我不能再採用這個3D點並使用一些公式,以一種將它投影回單位球體表面的方式來調整它的XYZ座標?

Finding coordinates of a point between two points?

+0

一個快速註釋 - 如果兩個點彼此直接相對(不確定這是否發生在您的場景中),那麼有無限數量的圓圈,半徑=通過它們的球體半徑。 – 2010-10-05 15:04:38

回答

2

令M和N是你的兩個點和O的起源。我們將找到P,MN的中間部分:OP = OM + ON/2。您計算OP的大小:| OP |。 OR = OP/| OP |您需要的點將是R = OM + ON/2 | OP |。

祝你好運與此計算。我不知道德爾福,但也許它允許直接矢量操作。如果不是解析幾何。

中間點的座標是M和N的座標(你說你可以計算出這些座標)的算術平均值。獲得| OP |的大小你提取x^2 + y^2 + z^2的平方根。要得到R,只需將P的座標分成剛剛計算的大小。

當M和N相反時(P == O),您可以分開處理。

+0

在我的原始文章中添加了後續內容,現在重新閱讀您的答案之後,我相信剛剛重申了您在評論中已經提到的內容。然而,這是中點回到單位球體的計算/外推,這是我需要的。 – 2010-10-05 15:45:28

+1

只需規範化你的中點矢量(OP)即可將其重新放回到單位球體上。當你的載體反平行時也要小心奇點。 – 2010-10-05 15:50:46

+0

羅恩你好。謝謝。爲了節省一些時間,您是否會知道以下URL中顯示的公式是否適用於正確標準化3D矢量?: http://www.wikihow.com/Normalize-a-Vector – 2010-10-05 15:53:56

相關問題