информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеВсе любят медЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





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

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

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

2 whiletrue: спасибо за линк
<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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach