2012-10-19 2 views
2

문제가있어서 해결책이 정확한지 알려주세요.주어진 거리에서 선을 따라 3D 점을 찾으십시오.

지점 A (x1, y1, z1)와 원점 O (0,0,0)에 알려진 지점이 있고 지점 B (x2, y2, z2)의 좌표를 찾고 싶습니다. 그 선은 OA에 위치하고 거리 OB는 OA보다 1.2 배 크다.

그래서, 내 아이디어는 점 O 및 A. OA의 방향이 (-X1, -Y1, -z1)에 의해 형성된 라인의 방정식을 구하는이므로 선의 방정식은 다음

x = -x1 * t;

y = -y1 * t;

z = -z1 * t;

거리 OA는 sqrt ((x1-0)^2 + (y1-0)^2 + (z1-0)^2)입니다. KNOWN

거리 OB는 sqrt ((x2-0)^2 + (y2-0)^2 + (z2-0)^2)입니다. UNKNOWN

거리 OB의 라인 방정식에 대해 결정된 x, y, z 점을 대체 할 수 있으며 결과는 거리 OA보다 1.2 배 커야합니다.

따라서, sqrt ((-x1 * t-0)^2 + (-y1 * t-0)^2 + (-z1 * t-0)^2) = 1.2 * dist (OA).

여기에서 t를 발견하고 2 차 방정식을 풀면 선의 등식에서 t를 대체하여 점의 좌표를 얻습니다.

이 정보가 맞습니까?

감사합니다.

편집 : 이 내 코드입니다 :

rangeRatio = 1.114; 

norm = sqrt((P2(1) - P1(1))^2 + (P2(2) - P1(2))^2 + (P2(3) - P1(3))^2); 

P3(1) = P1(1) + ((P2(1,1) - P1(1)) /norm) * rangeRatio; 
P3(2) = P1(2) + ((P2(1,2) - P1(2)) /norm) * rangeRatio; 
P3(3) = P1(3) + ((P2(1,3) - P1(3)) /norm) * rangeRatio; 

나는 또한 1 = 규준 시도, 그리고 난 항상 여전히 동일 선상에 있지 약간 다른 결과를 얻을 수 있지만.

고맙습니다.

+0

와우, 문제가 너무 복잡해졌습니다. – ja72

답변

3

훨씬 쉽습니다. a, b, c에 1.2를 곱하면됩니다. 이렇게하면 원본 줄 크기의 1.2 배가됩니다.

+0

a, b, c 대신에'x','y' 및'z'를 의미합니까? – ja72

+0

음 물론입니다. 또는 'x2 = 1.2 * x1','y2 = 1.2 * y1','z2 = 1.2 * z1'와 다르게 입력하십시오. – bartlaarhoven

+0

조금 설명해 주시겠습니까? – DCuser

관련 문제