2012-06-21 49 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