LINUX.ORG.RU

Вычисление общего объёма двух тел


0

0

Помогите, пожалуйста.

Даны два тела, которые заданы множеством точек на поверхности (плотность точек на кв. метр - известна). (см. картинки А и Б: http://img54.imageshack.us/img54/3931/bluesm0.png ). Как вычислить объём, занятый одновременно двумя телами? (картинка Ц)

Спасибо

★★

я взял бы бегал вектором по ячейкам каждой фигуры (через какойннить трехмерный массив размерности параллелограмма)... считал бы 1-цы, где 1-ца это объем элементарного шага(если координаты трехмерно дискретны). но это если не сглаживать... со сглаживанием каконнить трехмерный сплайн, но тут уже сложнее

как у тебя исходный массив задан для каждой фигуры - не сказано.

vilfred ☆☆
()
Ответ на: комментарий от vilfred

для примера двумерность, круг и эллипс с общим центром, различающимся по x на 20, требуется найти площадь получившейся фигуры:

for (i=0; i++; i<=100;){
  for (i=0; i++; i<=100;){
    if(((i+i0)^2+(j+i0)^2)^(-1/2) < = R && ){
      m[i][j]=1;
    }
    if((((i+i0+20)^2)/25+((j+i0)^2)/16)^(-1/2) < = 1 && ){
      m[i][j]=1;
    } 
  }
}

for (i=0; i++; i<=100;){
  for (i=0; i++; i<=100;){
    if(m[i][j]==1){count++;}
  }
}

printf("площадь двух фигур %d единиц\n",count);

извиняюсь за кривоту(100 наглюкал гдето, но дело в идее в самой), вобщем как-то так... в трехмерном случае 
добавляется еще цикл. Но все зависит от того, как задана 
поверхность... вобщем вот...

vilfred ☆☆
()
Ответ на: комментарий от vilfred

т.е. этого даже не надо? это обратная задача выше была скажем так :) 

имхо:

for (i=0; i++; i<=100;){
  for (j=0; j++; j<=100;){
    for (k=0; k++; k<=100;){
      if(m1[i][j]==1 || m2[i][j]==1){
        count++;
        count-- if (m1[i][j]==1 && m2[i][j]==1);
      }
    }
  }
}

print "суммарная площадь есть $count";

=)

vilfred ☆☆
()
Ответ на: комментарий от vilfred

А мож сюда теорему Остроградского-Гаусса за уши притянуть. Уж больно хочется по поверхности проинтегрировать... Хотя, вопрос с нахождением этой самой поверхности для пересекающихся тел для меня не совсем прост...

yz
()
Ответ на: комментарий от yz

> Или методом Монте-Карло...

+1/ Мне тож этот метод первым в голову пришел.

Пусть есть две фигуры: A, B.

Генерим случайные точки, принадлежащие фигуре А колическтвом n. Смотрим сколько из них принадлежат фигуре B, пусть k. Тады величина общей площади фигур будет k/n*100% от площади A. Для 3х- и более мерного случая алгоритм тот же.

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

brejnev
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.