2017-09-29 165 views
0

나는 그림과 같이 알려진 4 개의 좌표와 2 개의 알려진 좌표가있는 평야가 있습니다. 평면의 enter image description hereMATLAB을 사용하여 3D 공간에서 평면에서 선의 교차점을 찾는 방법

네 개의 좌표가 라인의

A = (-5 -5 -8) 
B = (15 15 -8) 
C = (15 15 12) 
D = (-5 -5 12) 

공동 좌표는이 경우 라인과 일반 교차에서

M = (1.3978,40,6.1149) 
N = 4.3943, 4.8078,0.3551) 

되어 있으며, 그럼 어떻게 내가 지점을 찾을 수 있습니다 MATLAB을 사용하여 3D 공간에서 선과 평면의 교차점? 또는 두 항목 모두 교차하는지 확인하려면 어떻게해야합니까?

내가 비디오 tutorial to find equation of plane from three pointstutorial for finding point where line intersects a plain

에 따라하지만 내 경우에 해결책을 찾기 위해 노력했다, 평면의 방정식은 0이다. 그래서 나는 혼란 스럽다. 누구든지 나를 도울 수 있습니까? 사전에

감사합니다, 마누

답변

1

나는 교차점을 찾기 위해 간단한 선형 대수를 사용합니다. 모두 커버하는

n가 (당신이 |N| = sqrt(dot(N, N))은 벡터 N의 길이가

당신은 matlabcentral에서 다음 기능을 사용할 수 있습니다라고 N = cross(AB, AD)의 벡터 제품, 다음 단위 n = N/|N|로 계산할 수있는 일반 정상하자 과 의견을 설명합니다 (예 : 선이 평면에 평행 때와)과 코너의 경우 코멘트에서

예 :.

A =[ -6.8756 39.9090 10.0000],B =[ -6.0096 40.4090 10.0000],C =[ -6.0096 40.4090 11.0000],D=[ -6.8756 39.9090 11.0000]; 
P0 =[ 1.3978 40.0000 6.1149],P1 =[ 4.3943 -4.8078 0.3551]; 

어디서 실수를했는지 모르겠지만 세그먼트 밖의 교차점이 있다는 것이 확실합니다. 따라서 check=3이 있어야합니다. 여기서 스텝 동작에 의해 단계의 출력이다. 그것은 전달 다른 지점 (B, C 또는 D)과 같은 결과를

>> AB = B-A 
AB = 0.8660 0.5000   0 
>> AD = D-A 
AD = 0  0  1 
>> n = cross(AB,AD)/sqrt(dot(cross(AB,AD),cross(AB,AD))) 
n = 0.5000 -0.8660   0 
>> [I,check]=plane_line_intersect(n,A,P0,P1) 
I = 1.0961 44.5116 6.6948 
check = 3 

check=3이 지나고 교점 I가 있다는 것을 의미 P01 세그먼트.

확인 단계로 normal n에 Nz = 0이 있음을 알 수 있습니다. 즉, Z 축에 수직이라는 의미입니다. 선이 Z 축에 평행 한 경우 (따라서 벡터 P01은 Z와 평행하고 Z 구성 요소는 0입니다) 선이 교차하지 않는 유일한 방법입니다.

귀하의 P01는 Z로 정렬되지 않은 : 나는 비행기 점 A = -6.8756 39.9090 10.0000]을 검사 할 때

>> P01 = P1 - P0 
P01 = 2.9965 -44.8078 -5.7598 
+0

가 귀하의 회신 – manoos

+0

주셔서 대단히 감사합니다, B = -6.0096 40.4090 10.0000] C = [-6.0096 40.4090 11.0000], D = [-6.8756 39.9090 11.0000] 및 라인 포인트 P0 = [1.3978 40.0000 6.1149], P1 = [4.3943-4.8078 0.3551], 함수를 사용할 때 check = 1이고 I = [-21.2205 31.6268 -6.3689]. 사실 교차가 없습니다. 설명해 주시겠습니까? 왜 이런 결과가 나옵니까? – manoos

+0

평면을 정의하는 데 3 점만 필요하며 4 점은 동일 평면이 아닙니다.네가 그렇기 때문에 이것은 문제가되지 않는다. 그러나, 나는 당신의 산출물을 재현하는데 실패하고 있으며, 결과는 나에게 합리적으로 보였다. 귀하의 의견을 통해 얻은 결과물을 살펴보십시오. 잘하면 실수를 발견 할 수 있습니다. –