информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
А как хранится объект? 22.06.04 14:11  Число просмотров: 1573
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
> Нужно вычислить объем части фигуры, отсеченной плоскостью.
> Может кто-нибудь знает графические библиотеки, имеющие
> такую функцию? Интересуют любые варианты, даже основанные
> на MFC или OpenGL/DirectX.

А как хранится сам объект?
Это функция (гладкая?, непрерывная?) или какая-то триангуляция?..
<programming>
Вычисление объема 21.06.04 08:13  
Автор: makeworld Статус: Member
<"чистая" ссылка>
Нужно вычислить объем части фигуры, отсеченной плоскостью. Может кто-нибудь знает графические библиотеки, имеющие такую функцию? Интересуют любые варианты, даже основанные на MFC или OpenGL/DirectX.
А как хранится объект? 22.06.04 14:11  
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
> Нужно вычислить объем части фигуры, отсеченной плоскостью.
> Может кто-нибудь знает графические библиотеки, имеющие
> такую функцию? Интересуют любые варианты, даже основанные
> на MFC или OpenGL/DirectX.

А как хранится сам объект?
Это функция (гладкая?, непрерывная?) или какая-то триангуляция?..
начальное положение обьекта задается в виде координат точек... 23.06.04 07:03  
Автор: makeworld Статус: Member
<"чистая" ссылка>
> А как хранится сам объект?
> Это функция (гладкая?, непрерывная?) или какая-то
> триангуляция?..

начальное положение обьекта задается в виде координат точек вершин
Это не графические библиотеки надо брать, а математические [upd] 21.06.04 12:10  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 21.06.04 12:13  Количество правок: 1
<"чистая" ссылка>
> Нужно вычислить объем части фигуры, отсеченной плоскостью.
Объем части фигуры вычисляется как двойной интеграл по поверхности (если надо еще и массу тела, а плотность задана неоднородной функцией, то тройной).

> Может кто-нибудь знает графические библиотеки, имеющие
> такую функцию? Интересуют любые варианты, даже основанные
> на MFC или OpenGL/DirectX.
Поставь задачу конкретнее. Тебе для себя и есть совершенно конкретные данные или тебе нужна универсальная программа.

В общем советую смотреть в сторону математических пакетов Maple/Mathematica/Matlab (MathCAD не рекомендую, он какой то попсовый сильно). Они тебе и нарисуют и вычислят и еще чего хошь сделают.
-------------------

Да, еще. Эти пакеты умеют еще раскрашивать графики для бОльшей наглядности, а также вращать график мышей и рассматривать со всех сторон (за Mathematica-у и Matlab не ручаюсь, но Maple это действительно ОЧЕНЬ сильный пакет)
Мне нужно программно сделать. Есть трехмерная фигура,... 22.06.04 06:42  
Автор: makeworld Статус: Member
<"чистая" ссылка>
> Поставь задачу конкретнее. Тебе для себя и есть совершенно
> конкретные данные или тебе нужна универсальная программа.
>
> В общем советую смотреть в сторону математических пакетов
> Maple/Mathematica/Matlab (MathCAD не рекомендую, он какой
> то попсовый сильно). Они тебе и нарисуют и вычислят и еще
> чего хошь сделают.
> -------------------
>
> Да, еще. Эти пакеты умеют еще раскрашивать графики для
> бОльшей наглядности, а также вращать график мышей и
> рассматривать со всех сторон (за Mathematica-у и Matlab не
> ручаюсь, но Maple это действительно ОЧЕНЬ сильный пакет)

Мне нужно программно сделать. Есть трехмерная фигура, которую можно вертеть в любом направлении и есть плоскость которая может двигаться по вертикали. Нужно все это отрисовывать и одновременно строить график изменения обьема отсеченной части фигуры в зависимости от положения секущей плоскости.

Сделать надо в кратчайший срок и поэтому я хочу пойти методом наименьшего сопротивления - для вывода графики юзать OpenGL или DirectX, а вот с подсчетом обьема возникают трудности..
Программа на каком языке должна быть? 22.06.04 12:20  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Мне нужно программно сделать. Есть трехмерная фигура,
Maple имеет встроенный язык программирования. И любой лист в сущности является программой на этом языке.

> Сделать надо в кратчайший срок и поэтому я хочу пойти
> методом наименьшего сопротивления - для вывода графики
> юзать OpenGL или DirectX, а вот с подсчетом обьема
> возникают трудности..
берешь уравнения фигуры и плоскости. Параметризуешь их, в том смысле, что кроме переменных x,y,z вводишь параметры a,b,c..., которые будут меняться программой (движение плоскости будет изменением одного из параметров). Интегрируешь в символьном виде и вбиваешь получившуюся формулу V(a,b,c,...) в программу (переменных уже быть не должно).

А для вывода графики юзай что нравится
Юзай для вывода что хошь, хоть GDI ж-) Но! 22.06.04 10:47  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 22.06.04 10:47  Количество правок: 1
<"чистая" ссылка>
> Мне нужно программно сделать. Есть трехмерная фигура,
> которую можно вертеть в любом направлении и есть плоскость
> которая может двигаться по вертикали. Нужно все это
> отрисовывать и одновременно строить график изменения обьема
> отсеченной части фигуры в зависимости от положения секущей
> плоскости.
>
> Сделать надо в кратчайший срок и поэтому я хочу пойти
> методом наименьшего сопротивления - для вывода графики
> юзать OpenGL или DirectX, а вот с подсчетом обьема
> возникают трудности..
У тебя трудности с теорией? Строится мат. модель. Она в основе. Находится формула для вычисления объёма. Для вывода на экран преобразовываешь то, что у тебя в мат. модели в то, что понимает твоя граф. библиотека. Для расчёта объёма подставляешь то, что у тебя в мат. модели в функцию, которая считает объём.
2 amirul: язык программированию любой, но я выбрал C. С... 23.06.04 07:21  
Автор: makeworld Статус: Member
Отредактировано 23.06.04 08:10  Количество правок: 1
<"чистая" ссылка>
2 amirul: язык программированию любой, но я выбрал C. С Mapple ни разу не работал.

> У тебя трудности с теорией? Строится мат. модель. Она в
> основе. Находится формула для вычисления объёма. Для вывода
> на экран преобразовываешь то, что у тебя в мат. модели в
> то, что понимает твоя граф. библиотека. Для расчёта объёма
> подставляешь то, что у тебя в мат. модели в функцию,
> которая считает объём.

С математической моделью это понятно, проблема как раз в формуле нахождения обьема. Точнее в написании функции, которая будет вычислять обьем любого обьекта. Ведь отсеченная часть может иметь другое кол-во вершин, быть выпуклой/вогнутой итд. И именно такую возможность я бы хотел получить, заюзав какую-нибудь готовую библиотеку. Вообще, если вычислять объем "самому", мне рекомендуют использовать метод триангуляции, т.е. разбиение отсеченной части фигуры на тетраедры и подсчет обьема каждого из них. Но это способ на первый взгляд слишком гиморный, хотелось бы упростить, тем более, наверняка должны же быть уже готовые резализации в инете.

Короче, никто не знает готовую библиотеку, в которой есть функции для вычисления обьема любой фигуры? Или ни у кого нет примера использования метода триангуляции?
Пару постов назад я спросил объект уже задан или его можно... 23.06.04 12:09  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> формуле нахождения обьема. Точнее в написании функции,
> которая будет вычислять обьем любого обьекта. Ведь
> отсеченная часть может иметь другое кол-во вершин, быть
Пару постов назад я спросил объект уже задан или его можно будет задавать динамически. При динамическом задании единственным выходом будет численное приближение, потому как символьное интегрирование - не такая уж тривиальная задача вообще и возможно на для всех возможных функций.

> Вообще, если вычислять объем "самому", мне рекомендуют
> использовать метод триангуляции, т.е. разбиение отсеченной
> части фигуры на тетраедры и подсчет обьема каждого из них.
Не обязательно тетраэдры - это самый простой метод. Возьми книжку по численным методам. Раздел численное интегрирование. Разбиение на тетраэдры - это аналог метода эйлера для плоскости (учитывается только первая производная). Чем больше производных будет учитываться, тем больше будет точность интегрирования.

> Но это способ на первый взгляд слишком гиморный, хотелось
> бы упростить, тем более, наверняка должны же быть уже
> готовые резализации в инете.
Гы. Просто ты не видел гиморных методов :-)

> Короче, никто не знает готовую библиотеку, в которой есть
> функции для вычисления обьема любой фигуры? Или ни у кого
> нет примера использования метода триангуляции?
Любая книжка по численным методам
объект уже задан, т.е. есть координаты вершин 24.06.04 07:56  
Автор: makeworld Статус: Member
Отредактировано 24.06.04 08:00  Количество правок: 1
<"чистая" ссылка>
> Пару постов назад я спросил объект уже задан или его можно
> будет задавать динамически. При динамическом задании
> единственным выходом будет численное приближение, потому
> как символьное интегрирование - не такая уж тривиальная
> задача вообще и возможно на для всех возможных функций.
объект уже задан, т.е. есть координаты вершин

> > Вообще, если вычислять объем "самому", мне рекомендуют
> > использовать метод триангуляции, т.е. разбиение
> отсеченной
> > части фигуры на тетраедры и подсчет обьема каждого из
> них.
> Не обязательно тетраэдры - это самый простой метод. Возьми
> книжку по численным методам. Раздел численное
> интегрирование. Разбиение на тетраэдры - это аналог метода
> эйлера для плоскости (учитывается только первая
> производная). Чем больше производных будет учитываться, тем
> больше будет точность интегрирования.
мне высокая точность не принципиальна..

> > Но это способ на первый взгляд слишком гиморный,
> хотелось
> > бы упростить, тем более, наверняка должны же быть уже
> > готовые резализации в инете.
> Гы. Просто ты не видел гиморных методов :-)
>
> > Короче, никто не знает готовую библиотеку, в которой
> есть
> > функции для вычисления обьема любой фигуры? Или ни у
> кого
> > нет примера использования метода триангуляции?
> Любая книжка по численным методам
эх, скорее всего придется так и сделать..

2 whiletrue: спасибо за линк
Млин, так бы и сказал, что объект - многогранник 24.06.04 11:57  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> объект уже задан, т.е. есть координаты вершин
Объект задан набором многогранников. Ну дык тогда никаких приближенных методов и символьных интегрирований - после разбиения на тетраэдры получишь точный результат.

Если фигура выпуклая, то алгоритм тривиален: 1) Сначала находишь результат отсечения (перебираешь все грани и вычисляешь линию пересечения с плоскостью, потом перебираешь все ребра этой грани и вычисляешь точки пересечения с вычисленной линией) - получаешь модифицированный набор граней и вершин. Но результат все равно останется выпуклым. 2) Произвольно выбираешь одну из вершин, остальные вершины выбираешь по три 3) Суммируешь объемы всех тетраэдров, имеющих вершинами выбранную и все комбинации по три.

Если фигура не выпуклая, то первый шаг остается таким же, а вот дальше придется помучаться. В данном случае, имхо, лучше всего разбить фигуру на выпуклые и использовать уже описанный алгоритм. Для этого перебираешь все грани и смотришь находятся ли все точки по одну полуплоскоть от этой грани (расстояние от точки до плоскости имеет один и тот же знак). Если да, то ничего делать не надо), а если нет, то рассекаем фигуру (алгоритм такой же как в первом пункте для выпуклой фигуры) вдоль этой плоскости и продолжаем работу уже с двумя отдельными фигурами.
Ссылка 23.06.04 12:07  
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
> 2 amirul: язык программированию любой, но я выбрал C. С
> Mapple ни разу не работал.
>
> > У тебя трудности с теорией? Строится мат. модель. Она
> в
> > основе. Находится формула для вычисления
> объёма
. Для вывода
> > на экран преобразовываешь то, что у тебя в мат. модели
> в
> > то, что понимает твоя граф. библиотека. Для расчёта
> объёма
> > подставляешь то, что у тебя в мат. модели в функцию,
> > которая считает объём.
>
> С математической моделью это понятно, проблема как раз в
> формуле нахождения обьема. Точнее в написании функции,
> которая будет вычислять обьем любого обьекта. Ведь
> отсеченная часть может иметь другое кол-во вершин, быть
> выпуклой/вогнутой итд. И именно такую возможность я бы
> хотел получить, заюзав какую-нибудь готовую библиотеку.
> Вообще, если вычислять объем "самому", мне рекомендуют
> использовать метод триангуляции, т.е. разбиение отсеченной
> части фигуры на тетраедры и подсчет обьема каждого из них.
> Но это способ на первый взгляд слишком гиморный, хотелось
> бы упростить, тем более, наверняка должны же быть уже
> готовые резализации в инете.
>
> Короче, никто не знает готовую библиотеку, в которой есть
> функции для вычисления обьема любой фигуры? Или ни у кого
> нет примера использования метода триангуляции?

Я Гулем нашел довольно неплохой pdf на тему...
http://www.fep.tsure.ru/russian/kes/books/ryndin/mmf.pdf
Вобщем, там все достаточно ясно написано, имхо. Может пригодится, если не найдешь че-то готовое.
А в чём объём будешь мерять? В кубических пикселях? ;-) 21.06.04 11:48  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 21.06.04 11:51  Количество правок: 1
<"чистая" ссылка>
> Нужно вычислить объем части фигуры, отсеченной плоскостью.
> Может кто-нибудь знает графические библиотеки, имеющие
> такую функцию? Интересуют любые варианты, даже основанные
> на MFC или OpenGL/DirectX.
OpenGL/DirectX это библиотеки для 3D-рендеринга... Ихние внутренние представления и алгоритмы СИЛЬНО отличаются от традиционной стереометрии. Эти библиотеки признаны обманывать человеческое восприятие с максимальной для компьютера эффективностью, а не моделировать трёхмерные миры с точностью до вычисления объёмов ;-)
Так что бери справочник по стереометрии и в бой! :)

Насколько я знаю, продвинутые CAD'ы могут считать объёмы деталей/полостей...
Я так понимаю, можно посчитать в процентах 22.06.04 15:11  
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach