Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
А в чём объём будешь мерять? В кубических пикселях? ;-) 21.06.04 11:48 Число просмотров: 1599
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 21.06.04 11:51 Количество правок: 1
|
> Нужно вычислить объем части фигуры, отсеченной плоскостью. > Может кто-нибудь знает графические библиотеки, имеющие > такую функцию? Интересуют любые варианты, даже основанные > на MFC или OpenGL/DirectX. OpenGL/DirectX это библиотеки для 3D-рендеринга... Ихние внутренние представления и алгоритмы СИЛЬНО отличаются от традиционной стереометрии. Эти библиотеки признаны обманывать человеческое восприятие с максимальной для компьютера эффективностью, а не моделировать трёхмерные миры с точностью до вычисления объёмов ;-)
Так что бери справочник по стереометрии и в бой! :)
Насколько я знаю, продвинутые CAD'ы могут считать объёмы деталей/полостей...
|
<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
|
|
|
|