2011-09-27 2 views
2

3D P (x, y, z)와 Ax + By + Cz + d = 0의 평면에 점이 있습니다. 내가 비행기에 그 3 차원 점을 프로젝트와 E는 무엇 내가 지금 뭐하는 거지하는 가장 가까운 지점을 얻을 수 평면상의 3 차원 직교 투영

P(x,y,z) = 3d point which i want to project on the plane. 
Plane Ax + By + Cz + d = 0 , so normal n = (A,B,C) 
E(ex,ey,ez) = A point in plane (eye pos of camera) 

입니다

시점을 기준으로 투영 된 포인트의 2 차원 좌표를 얻으려면 E.Now 평면에서 점입니다 점에서 비행기에서. 그러면 내가 EI에 그 점을 뺀다.

제발 도와주세요. 감사합니다.

답변

2

가장 가까운 점은 평면의 법선을 따른 것입니다. 그래서 그 법선을 따라 P로부터 오프셋 된 점 Q를 정의하십시오.

Q = P - n*t 

이어서 평면 Q두고 t 풀기 :

dot(Q,n) + d = 0 
dot(P-n*t,n) + d = 0 
dot(P,n) - t*dot(n,n) = -d 
t = (dot(P,n)+d)/dot(n,n) 
도트 ((X1, Y1, Z1)는, (X2는 Y2가, Z2)는)는 X1의 * 2 배 + 빔 생성기 =

* y2 + z1 * z2

+0

감사합니다. Vaughn, ok, 이제 가장 가까운 점을 얻었으나 E 점에 대한 상대적인 점을 변환하려고합니다. (E는 원점입니다.) E.I에서 가장 가까운 점을 빼면 올바른 것입니까? 너 내 질문을 제대로받지 못했다면 알려줘 ?? – YAHOOOOO

+0

질문에서 당신은 2D 좌표를 원한다는 것을 나타냅니다. 평면에 2D 좌표계를 설정해야합니다. 당신은 E가 기원이어야한다고 말하지만, 축은 어떨까요? –

+0

사실 원점을 E로 바꾸고 그 평면을 새로운 XY 평면으로 만들려고 E와 새 점이 같은 Z를 갖도록하고 싶습니다. 뭔가 빠졌습니까? 또한 2D 좌표 시스템을 만드는 방법 ??? – YAHOOOOO

0

p0 = (0, 0, -d/C)과 같은 점을 얻습니다. 나는 보통 길이가 단위 길이라고 가정한다.

n과 같은 방향으로 p 부분이 dot(p-n0, n) * n + p0이므로 투영은 p - dot(p-p0,n)*n입니다.

비행기에서 일부 좌표를 원한다면 기초/좌표계를 제공해야합니다. 예를 들어 평면에 걸쳐있는 두 개의 선형 독립 벡터 좌표는이 기본 벡터에 따라 달라집니다.

관련 문제