Объём пересечения кубов
От: Olegator  
Дата: 12.01.06 00:56
Оценка:
Ну ладно, попробую ещё раз. Имеются два куба с центрами симметрии, совпадающими в начале координат. Ребро обоих кубов равно 2. Стороны первого куба параллельны осям координат (соответственно, вершины первого куба фиксированы). Задаются координаты вершин второго куба. Необходимо найти объём пересечения двух этих кубов.

Я пробовал:
1) разбить второй куб на N*N*N точек, проверить каждую на принадлежность первому (благо сделать это легко). Тогда V = 8 * кол-во_точек_принадлежащих_первому_кубу / (N*N*N). [Метод Монте-Карло?]
2) численный метод, т. е. рекурсивно разбивать второй куб на меньшие кубы, если какой-то куб полностью входит в первый куб, прибавлять его объём. Метод динамической палетки, так сказать.

Проблема в том, что для получения необходимой точности (6 знаков после запятой) работает непозволительно долго. В принципе, если кому интересно, могу дать исходный код для этих методов.

Итак, интересуют любые полезные советы/линки/исходники, в том числе и англоязычные ресурсы. В общем, буду премного благодарен.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: Объём пересечения кубов
От: davenger  
Дата: 12.01.06 01:22
Оценка:
Здравствуйте, Olegator, Вы писали:

Мне кажется что всё-же самый нормальный способ — это считать аналитически, а не чиссленно. Т.е. посчитать объемы, отсекаемые от повёрнутого куба плоскостями, проведеёнными параллельно координатным плоскостям, потом объемы отсекакмые парами таких плоскостей, а затем тройками. А потом вычесть (некоторые надо будеь прибавить, т.к. например кусок осекаемый 2-мя плоскостями будет вычтен 2 раза — он входит в 2 куска отсекакмых одними плоскостями) эти объёмы из объёма куба.
Re[2]: Объём пересечения кубов
От: Olegator  
Дата: 12.01.06 12:38
Оценка:
Здравствуйте, davenger, Вы писали:

D>Мне кажется что всё-же самый нормальный способ — это считать аналитически, а не чиссленно. Т.е. посчитать объемы, отсекаемые от повёрнутого куба плоскостями, проведеёнными параллельно координатным плоскостям, потом объемы отсекакмые парами таких плоскостей, а затем тройками. А потом вычесть (некоторые надо будеь прибавить, т.к. например кусок осекаемый 2-мя плоскостями будет вычтен 2 раза — он входит в 2 куска отсекакмых одними плоскостями) эти объёмы из объёма куба.


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

1) второй куб повёрнут относительно первого только по одной оси. Получаются 4 фигуры с прямоугольным основанием:

W     /\      V  +------+
   +------+      |------|
   |      |      |      |
  <|      |>     |------|
   |      |      |      |
   +------+      |------|
      \/         +------+


2) второй куб повёрнут по трём осям. Получаются 8 пирамидок:

W     /\      V     /\
   +------+      +------+
   |      |      |      |
  <|  /\  |>    <|  /\  |>
   |      |      |      |
   +------+      +------+
      \/            \/


Какие ещё варианты образования фигур могут быть? Какие фигуры получаются при повороте по двум осям?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Объём пересечения кубов
От: What Беларусь  
Дата: 12.01.06 14:05
Оценка:
Здравствуйте, Olegator, Вы писали:

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

ИМХО, чем считать объём объединения, легче посчитать объём пересечения и вычесть его из суммы объёмов кубов.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Объём пересечения кубов
От: Olegator  
Дата: 12.01.06 14:29
Оценка: +1
Здравствуйте, What, Вы писали:

W>ИМХО, чем считать объём объединения, легче посчитать объём пересечения и вычесть его из суммы объёмов кубов.


Мне и нужно найти объём пересечения.
... << RSDN@Home 1.1.4 stable rev. 510>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.