2012-06-21 76 views
2

我有4個點,其中三個點使得兩行像一個V或一個<或a>,你明白了,現在我得到了一個點在那個圓錐體中V),我可以從頂部到左下角,右下角,但不是底部pos的位置。得到兩行之間的一個點的距離

也許這會有所幫助。 https://dl.dropbox.com/u/28109593/examplevec.png

而且我有代碼來解決這個問題附和:

public float GetDist(Vector3f one, Vector3f two, Vector3f three, Vector3f p){ 


      Vector3f one_to_point = new Vector3f(0,0,0); 
      Vector3f.sub(p,one,one_to_point);   //Storing vector A->P 



      Vector3f one_to_two = new Vector3f(0,0,0); 
      Vector3f.sub(two, one, one_to_two);   //Storing vector A->B 

      Vector3f one_to_three = new Vector3f(0,0,0); 
      Vector3f.sub(three, one, one_to_three);   //Storing vector A->C 

      float q1 = Vector3f.dot(one_to_point, one_to_two)/one_to_two.lengthSquared();   // The normalized "distance" from a to b 
      float q2 = Vector3f.dot(one_to_point, one_to_three)/one_to_three.lengthSquared();   // The normalized "distance" from a to c 

現在我已經知道,POS向量是在錐體,還等什麼,我需要做的就是在POS如圖所示由圖像中的綠色圓圈pos?

+0

多遠是綠色點沿行? –

+0

它會在B和C的末尾,但它會在B到C的長度上有所不同。 – CyanPrime

回答

2

你在飛機上有4個點:A,B,C和D(其中D是你在圖中標爲pos的位置)。獨特的直線可以任意2個不同的點之間繪製於是找到了直線連接A和d,並得到了方程的形式

y = m_1 * x + c_1 

執行相同的B線和C分拿

y = m_2 * x + c_2 

現在你知道了2條線,你可以求解這對聯立方程來得到位於圖上的綠色圓圈上的點(x,y) - 我將這稱爲E.給定E,計算向量BE的長度除以向量BC的長度。此值是您在問題中查找的值X

如果你不知道如何找到通過2點進了線的方程看看這個鏈接的詳細信息http://www.ugrad.math.ubc.ca/coursedoc/math100/notes/zoo/eqline.html

我不懷疑,還有一個更簡單更優雅的方式來做到這一點,但如果你在這裏沒有其他答案,這種方法將符合你的目的。

+0

我認爲你說得對,當你簡化它時它非常優雅。在代碼中,我認爲你可以做一些類似x = A.x +((A.x - Pos.x)/(A.y - Pos.y))*(A.y-B.y)的東西。基本上,你會發現y的每個單位上的x的增量,然後是你想要投射出的y的單位數的倍數。 – JonBWalsh

+0

@JonBWalsh c_1和c_2通常不會相同。要看到這一點,請考慮所有點的翻譯問題,使B點與原點重合。 – mathematician1975

+0

我如何獲得c_和m_? – CyanPrime

1

自從我做矢量代數已經有一段時間了,但讓我看看我是否明白這一點。你正在尋找綠色的點,這是從A到位的一條線與從B到C的一條直線的交點。

我相信如果你知道BA-Pos形成的角度與BAC角度的比率形式,該比例將與從B到綠色的距離與從B到C的距離的比率相同。從B開始,綠色的方向與C的方向相同,因此表示綠色的位置的向量是

VectorGreen = VectorB +(X1/X2)(VectorC - VectorB)//到B的向量加上矢量的從B到C

的餾分

X1 =反餘弦(規格化(VectorP - VectorA)*正常化(VectorB - VectorA))// A到B和A之間的角度到名次

X2 =反餘弦(規格化(VectorB - VectorA)*規格化(VectorC - VectorA))//角度A之間,以B和A至C

+0

你如何將整個向量轉換爲一個數字?或者是x1和x2向量? – CyanPrime