Столкновения трёхмерных объектов

Рейтинг: 2Ответов: 4Опубликовано: 18.05.2011

Как определить столкновение двух трёхмерных фигур в пространстве? Не столь важен язык или сам способ представления объекта, как алгоритм и соответствующий код (конечно, лучше используя csharp и библиотеки XNA).

Просьба не предлагать алгоритмы типа: вписать оба объекта в сферу и проверять столкновения сфер - это самое простое решение, которое в моей ситуации не учитывает специфику трёхмерных объектов.

Ответы

▲ 2Принят

Посмотрите коллекцию алгоритмов. Вот статейка оттуда. Идея этого метода определения, пересекаются ли выпуклые фигуры: Если существует прямая, проекции фигур на которую (отрезки, значит) не пересекаются, то фигуры не пересекаются.

▲ 2

На алголисте много по этой теме. http://algolist.manual.ru/maths/geom/index.php

В частности вот по пересечению. http://algolist.manual.ru/maths/geom/intersect/

▲ 2

Сферы в любом случае придется проверять, и только если сферы пересеклись, идти глубже и проверять пересечения треугольников.

Вот посмотрите эту статью, там в конце есть код как очень просто добавить обработку колизий к моделям. Пишем игры для Windows Phone

▲ 2

Первое, что хочется посоветовать - никогда не скрещивать физику и графику. Визуальные объекты - одно, обнаружение столкновений - совсем другое.

По сабжу, лучше воспользоваться одним из открытых физических движков. ODE, к примеру, Bullet, Newtone. Они позволяют не только обнаружить факт пересечения объектов(причём, делают это гораздо быстрее рукописных решений), но и отреагировать на него(в смысле, объекты будут вести себя как настоящие).