2012-06-21 4 views
2

나는 4 점을 가지고 있는데 그 중 3 점은 V 또는 < 또는>와 같은 두 줄을 만들고 아이디어를 얻는다. 이제 그 원뿔에있는 점을 얻는다. V) 그리고 맨 위 왼쪽 하단, 그리고 오른쪽 하단까지 dist를 얻을 수 있습니다.두 줄 사이에 한 점의 거리를 얻는다

아마도 도움이 될 것입니다. 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를 얻으려면 어떻게해야합니까 이미지에서 녹색 원의 위치로?

+0

에 B와에 대한 사이 // 각도인가? –

+0

B와 C의 끝 부분에 있지만 B에서 C까지의 길이가 다릅니다. – CyanPrime

답변

2

평면에 4 개의 점이 있습니다 : A, B, C 및 D (여기서 D는 다이어그램에서 pos로 레이블을 지정합니다.) 독특한 직선이 때문에 B와 C 점은

를 얻을 수

y = m_1 * x + c_1 

라인에 대해 동일한 작업을 수행 A와 D를 연결하는 직선을 찾아 형태의 방정식을 얻을 수있는이 개 독특한 점 사이에 그릴 수 있습니다

y = m_2 * x + c_2 

이제 두 줄을 알고 있습니다.이 쌍의 연립 방정식을 풀어 다이어그램의 녹색 원에있는 점 (x, y)을 얻을 수 있습니다.이 점을 E라고 가정합니다. 벡터 BE의 길이를 벡터 BC의 길이로 나눕니다. 이 값은 귀하의 질문에서 찾고있는 X의 값입니다.

당신은 http://www.ugrad.math.ubc.ca/coursedoc/math100/notes/zoo/eqline.html

나는 간단한 더 우아한이 작업을 수행하는 방법이 있지만, 만약이 있다는 것을 의심하지 않는다 자세한 내용은이 링크를 보면 2 점을 통과 선에 대한 방정식을 찾을 수없는 경우 당신은 여기서 다른 대답을 얻지 못합니다.이 접근법은 당신의 목적에 도움이 될 것입니다.

+0

나는 그것이 옳다 고 생각한다. 그리고 그것을 단순화 할 때 꽤 우아하다. 코드에서 저는 x = A.x + ((A.x-Pos.x)/(A.y-Pos.y)) * (A.y-B.y)와 같은 것을 할 수 있다고 생각합니다. 기본적으로 y의 각 단위에 대해 x의 델타를 찾은 다음 프로젝트에 넣을 단위의 수를 찾습니다. – JonBWalsh

+0

@JonBWalsh c_1 및 c_2은 일반적으로 동일하지 않습니다.이를 보시려면 점 B가 원점과 일치하도록 모든 점을 번역 할 때의 문제를 고려하십시오. – mathematician1975

+0

어떻게 c_와 m_를 얻습니까? – CyanPrime

1

벡터 대수학을 마친 이후로 꽤 오랜 시간이 걸렸지 만,이 권리가 있는지 알려주도록하겠습니다. 당신은 녹색 점을 찾고 있는데, A에서 Pos까지의 선이 B에서 C까지 선과 교차하는 곳입니다.

BA-Pos가 형성하는 각도와 BAC가 이루는 각의 비율 그 비율은 B에서 Green까지의 거리와 B에서 C까지의 거리의 비율과 같습니다. B에서 Green의 방향은 C의 방향과 동일하므로 Green의 위치를 ​​나타내는 벡터는 다음과 같습니다.

VectorGreen VectorB = + (X1/X2) (VectorC - VectorB) // (B)에 대한 벡터 더하기 C

행 B에서 벡터의 일부분

ARCCOS X1 = (정규화 (VectorP - VectorA) * 표준화 (VectorB - VectorA)) // A와 B와 A 사이의 각도 순위에

X2 = ARCCOS (표준화 (VectorB - VectorA) * 표준화 (VectorC - VectorA)) 얼마나 멀리 선을 따라 녹색 점은 C

+0

어떻게 전체 벡터를 하나의 숫자로 arccos합니까? 또는 x1과 x2 벡터도 있습니까? – CyanPrime

관련 문제