2009-09-06 1 views
5

Я пытаюсь создать рендеринг необработанных данных из файла Quake 3. .map с Java. Формат .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) 

Edit:

Эти данные показывает куб, который имеет 6 сторон. Каждая из этих шести сторон может быть сохранена как плоскость, с тремя координатами, чтобы показать положение и ориентацию. Каждая строка из приведенных выше данных показывает одну плоскость, и все 6 рядов образуют 6 плоскостей, составляющих куб.

Это изображение помогает проиллюстрировать мою точку зрения: Three Points Defining a Plane

точек p1, p2, p3 и то, что я даю в строке, в приведенных выше данных.

Двигатель Quake 3 должен разобраться, какие части самолетов держать во время компиляции, но в данный момент меня это не интересует. Если вы хотите получить дополнительную информацию, не стесняйтесь спрашивать!

+2

Не могли бы вы объяснить, как ваши данные представляют собой три плоскости, а не 18 векторов? –

+0

Конечно. Я отредактировал свой вопрос. – Fiarr

ответ

3

Я обращаюсь к Wolfram Mathworld, когда у меня есть такие вопросы. По этой причине попробуйте эту страницу: Plane-Plane Intersection

Уравнение 8 на этой странице дает пересечение трех плоскостей. Чтобы использовать его, вам сначала нужно найти нормальные единицы для самолетов. Это очень просто: учитывая три точки , б и с на плоскости (это то, что у вас есть, правда?), Взять декартово произведение ( - б) и (a - c), чтобы получить нормальное значение, затем разделите его на свою величину, чтобы получить единицу нормальной.

+0

Это помогло! Большое спасибо! – Fiarr