2009-09-06 10 views
5

Java로 Quake 3 .map 파일의 원시 데이터를 렌더링하려고합니다. .map 형식은 일련의 평면으로 브러시 (모양) 정보를 저장하지만,이를 (x, y, z) 형태의 점으로 변환하고 싶습니다. 관련된 수학은이 시점에서 조금 벗어난 것입니다. 그렇다면 어떻게 할 수 있습니까? 필요한 경우 외부 라이브러리를 사용하는 것이 좋지만 가능한 경우 자체 코드를 사용하고 싶습니다. 놀세 평면의 교차점은 어떻게 찾을 수 있습니까?

일부 데이터 :

Dimensions: 64*64*64 
Position:  All sides are equidistant from the origin (0,0,0) 
Shape:  Cube 
(64 64 64) (64 -64 64) (-64 64 64) 
(64 64 64) (-64 64 64) (64 64 -64) 
(64 64 64) (64 64 -64) (64 -64 64) 
(-64 -64 -64) (64 -64 -64) (-64 64 -64) 
(-64 -64 -64) (-64 -64 64) (64 -64 -64) 
(-64 -64 -64) (-64 64 -64) (-64 -64 64) 

편집 :

가이 데이터는 6 개면을 가진 큐브를 보이고있다. 이 6면 각각은 위치와 방향을 나타내는 세 개의 좌표로 평면으로 저장할 수 있습니다. 위 데이터의 각 행은 하나의 평면을 보여 주며 6 개의 행 모두가 입방체를 구성하는 6 개의 평면을 만듭니다. P1, P2, P3가 나는 위의 데이터에서 행 당주는거야 무엇 Three Points Defining a Plane

포인트 :

이 이미지는 나의 점을 설명하는 데 도움이됩니다.

퀘이크 3 엔진은 컴파일 할 때 비행기의 어떤 부분을 정리해야하지만, 지금은 관심이 없습니다. 더 많은 정보를 원하시면, 언제든지 물어보십시오!

+2

데이터가 18 개의 벡터가 아닌 3 개의 평면을 나타내는 방법을 설명해 주시겠습니까? –

+0

물론. 내 질문을 편집했습니다. – Fiarr

답변

3

나는 이런 질문이있을 때마다 볼프람 매스 월드에 간다. 이 문제를 해결하려면 다음 페이지를 사용해보십시오. Plane-Plane Intersection

이 페이지의 식 8은 세 개의 평면이 교차하는 부분을 제공합니다. 이것을 사용하려면 먼저 비행기의 단위 법선을 찾아야합니다. 이것은 간단합니다 : 세 점 주어진가, 비행기에 BC은, (A- B)의 크로스 제품을 (즉, 바로 당신이있어 무엇인가?)과 (a - c) 정상을 얻고, 그 다음에 단위 크기를 얻기 위해 자체 크기로 나눕니다.

+0

도움이되었습니다! 고마워요! – Fiarr

관련 문제