2012-08-05 1 views
2

나는 인터넷에서 300 페이지가 넘는 책을 읽었으며, 내가 원하는 결과를 얻지 못했거나 작동하지 않았기 때문에 사람들이 나를 도와 줄 수 있기를 바랍니다. 의사 코드와 수학을 사용하여 설명 할 수 있습니다. :)알려진 XYZ 각도, 반경 및 원점을 가진 점으로부터 3D 좌표 찾기?

따라서 점 A (원점)가 있습니다. 점 A는 반경, XYZ 위치 및 XYZ 회전을가집니다 (두 각도로 수행 할 수 있지만 3 각이 있어야합니다). 포인트 B의 위치를 ​​알 수 없습니다.

해당 정보로 무장 한 제 질문은 : 점 B의 위치를 ​​어떻게 알 수 있습니까? (또는 내 질문은 "구에서 3D 점을 찾는 방법"이라고 표현할 수 있습니다.)

저는 이미 2D로 해왔고 거기에서 효과가있었습니다. 2D에 대한 내가 사용 : 나는 순수 매트릭스를 사용하지 않는하지만 난 코사인 등을 사용할

x=pointA.x+radius*cos(angle) 
y=pointA.y+radius*sin(angle) 

. (심하게 실패, 정말 코사인와 XYZ 회전을 결합하는 방법을 모르고이 없다) 내 시도 의사 코드는 : 누군가가 나를 도울 수 있다면

newx=pointA.x+radius*cos(rotationY)*sin(rotationZ+toRadians(90)) 
newy=pointA.y+radius*cos(rotationZ-toRadians(90))*math.sin(rotationY)*math.cos(rotationX) 
newz=pointA.z+radius*math.cos(rotationZ+toRadians(90))*sin(rotationX) 

나는 그것이 너무 감사하겠습니다. :)

답변

0

원점에 중심이 있고, 알려진 반지름, 방위각 및 입면도를 가진다고 가정합니다. 그런 다음 spherical to cartesian conversion을 사용하여 직교 좌표를 간단히 찾을 수 있습니다.

따라서 먼저 A 반지름과 각도로 상대 B 구성 요소를 가져옵니다. 당신은 직교 성분을 얻습니다. 그런 다음 이러한 상대적인 구성 요소를 A 직교 구성 요소에 추가하여 절대 B 좌표를 반환 할 수 있습니다. 롤 각도를 고려하지 마십시오. 왜냐하면 한 지점에 대해서는 쓸모가 없기 때문입니다.

+0

감사 :

추가 유용한 링크

는 비슷한 답변 같은 질문이 하나입니다. 그것은 단지 2 개의 각도로 성공적으로 회전했습니다.하지만 XY 또는 ZX 등을 사용해야하는지 아직 확실하지 않습니다. – Arundel

+0

규칙이 있습니다. 원하는 컨벤션을 사용할 수 있지만 일관성을 유지해야합니다 (할 수 있으면 항상 같은 규칙을 사용하십시오). 이 사실을 모르는 경우 ZYX 규칙을 사용하십시오. – Jepessen

1

X = COS (요) * COS (피치)

Y = 죄 (요) * COS (피치)

죄 Z = (피치)

롤이 필요하지.

이것은 완벽하지 않습니까? 라디안이 필요하며 이는 오류의 원인 일 수 있습니다. 나는 모든 쿼터니온 (quaternion)을 갖거나 롤을 통합해야한다고 믿지만 중급 솔루션으로는 충분할 수 있습니다.

는 최근의 상황에서 나는 X = COS (요) * -cos (피치)에 대한 답변을

0

감사에 대한 피치의 COS를 부정. 저는이 질문에 대한 답변이 오래 전에 있었음을 알고 있습니다. 그러나이 글을 읽는 사람들을 위해 제 구현을 공유 할 것입니다. 루아에서 여기 있습니다. A는 좌표 시스템을 사용하면이 응답 여기서 Y는 중요한 것이

function PointOnSphere(origin,rotation,radius) 
return {x=origin.x+radius*math.cos(math.rad(rotation.y))*math.cos(math.rad(rotation.x)),y=origin.y+radius*math.sin(math.rad(rotation.x)),z=origin.z+radius*math.sin(math.rad(rotation.y))*math.cos(math.rad(rotation.x))} 
end 

주 : (도) 개의 입력 각도 (방위각 및 고도 rotation.x 및 rotation.y와 동일하다)와 PointOnSphere 함수 축이 가리킨다. 일반적으로 나는 위키 피 디아에 그 방정식을 이해하지 않지만, 지금은 내 3D 환경으로 구현 할 수 있었다, https://math.stackexchange.com/questions/264686/how-to-find-the-3d-coordinates-on-a-celestial-spheres-surface