Показать сообщение отдельно
Старый 25.04.2008, 11:12   #20
AnyWay
Оператор ЭВМ
 
Регистрация: 08.09.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Ответ: Объём in 3д <?> как

Сообщение от drunnik Посмотреть сообщение
образована например уже сразу 10 точками ?
Если внимательно, с листком бумаги, посмотреть алгоритм то все станет понятно. Никто не заметил, но он работает не для всех фигур, например для звезды п.3 не выполняется в принципе. Но если вспомнить, что полигоны имеют внутреннюю и наружную стороны, то можно алгоритм сделать общим для всех моделей:
  1. Ищутся два полигона имеющие общую сторону (образуют тетраэдр с 4 вершинами) и удовлетворяющие условию: точка не принадлежащая полигону должна лежать с его внутренней стороны (условие для обоих полигонов)
  2. считается объем тетраэдра по координатам 4 точек (например по формуле http://www.pm298.ru/zadachi3.shtml или самому вывести). Объем складывается с объемом уже удаленных ранее тетраэдров.
  3. Полигоны удаляются из модели.
  4. Удаляются вершины не принадлежащие ни одному полигону модели. Если была удалена 1 вершина, то из оставшихся 3 создается полигон лицевой стороной внутрь удаленного тетраэдра. Если небыло удалено ни одной вершины, то создаются 2 новых полигона не равных удаленным, направлением внутрь удаленного тетраэдра. Если удалены 2 или более вершин, то новых полигонов не создается.
  5. Если в модели еще остались полигоны, то переход на п.1, иначе суммарный объем удаленных тетраэдров и есть объем модели.
Как определить с внутренней или с наружной стороны полигона находится четвертая точка, я думаю, понятно. В процессе подсчета модель разрушается, поэтому лучше использовать копию или прошедшее время в отчете: "У модели был объем V"
(Offline)
 
Ответить с цитированием