Форум: "Media";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизКак отобразить 3D функцию на экране? Найти похожие ветки
← →
-=DeMoH=- (2003-09-23 22:48) [0]Вот суть моей проблемы: делается математическая программа, которая рассчитывает уравнение движения некоторого тела (скажем, шарика в кубе). И вот когда это уравнение движения уже создпно, требуется красиво это вывести на форму. Как это можно сделать?
Пока я использую компонент TChart но так как он не может отображать трехмерные графики, приходится использовать три таких компонента и в итоге отображается три графика (по X, по Y и по Z) а это, естественно очень не наглядно...
Если у кого есть идеи, напишите как, например, нарисовать по стандартной математической функции эллипс или что-нить в этом роде...
← →
Jeer (2003-09-24 10:32) [1]Математику учить из разделов афинная и проективная геометрии.
А рисование на Canvas никто не отменял.
← →
-=DeMoH=- (2003-09-24 10:36) [2]Идея, конечно, неплохая, но может кто-нить предложит конкретную реализацию. Скажем, имеется трехмерный массив координат точек (X,Y,Z), которые надо отобразить на экране в трехмерном виде (без разницы как, главное, чтобы полученное изображение хотя бы отдаленно напоминало трехмерное тело :)
Например, так, как это делает Maple или AutoCAD.
← →
Jeer (2003-09-24 10:52) [3]Второй вопрос совсем не похож на первый:)
Что надо-то ?
Строить кривую в трехмерном пространстве или на основании
части точек принадлежащих некоторому телу построить его трехмерную модель?
← →
pasha_676 (2003-09-24 11:42) [4]Самое простое решение для реализации лежит в области использования компонента GLScene. И функцию там на рисуешь и движение тела и подразными углами посмотришь... В отличии от изучения чистого OpenGL или DirectX очень быстро можно все навоять и эффект будет хорошим.
Вообщем рекомендую покрутить его и примеры к нему...
← →
-=DeMoH=- (2003-09-24 12:17) [5]Скажем так, нужно построить поверхность такого рода:
(sqrt(x^2+y^2)+1)^2+z^2-4=0 где x,y,z лежат в интервале от -1 до 1.
В математическом пакете Maple-7 получается что-то типа обручального кольца :)
Как это можно построить в Delphi
← →
Jeer (2003-09-24 12:23) [6]1. Изучать принципы построения поверхностей и реализовывать самому.
2. Воспользоваться советом pasha_676 © (24.09.03 11:42) [4]
Но от изучения принципов это не избавит
← →
-=DeMoH=- (2003-09-24 13:54) [7]т.е. ничего конкретного в делфине нет? Тогда буду рад, если мне кто-нибудь поможет с алгоритмом...
← →
pasha_676 (2003-09-24 13:55) [8]http://glscene.sourceforge.net/gallery_users.htm
Примеры на GLScene. Обрати внимание на пример FormEx3D
Помоему то что нужно...
← →
pasha_676 (2003-09-24 14:03) [9]
> т.е. ничего конкретного в делфине нет?
Есть, но если ты читать не умеешь...
Есть четыре основных способа построения 3D пространства
1) Считать самому и выводить на экран через канвас - трудоемко и долго
2) OpenGL
3) DirectX
4) Подцепить через ОЕМ или COM уже существующую программу (тот же макс или инвентор) и крутить там. Требует серьезного изучения и серьезных док по этим программам с раскладкой по интерфейсам.
Наиболее легкий в освоении, универсальный и быстрый путь лежит через компоненты надстройки на OpenGL и DirectX. Одним из них, пожалуй самым продвинутым и простым, как раз и является GLScene.
← →
Jeer (2003-09-24 14:11) [10]-=DeMoH=- © (24.09.03 13:54) [7]
А что должно быть конкретного ?
ObjPas универсальный язык, а не распальцовка на сходке.
Все в Ваших руках и, надеюсь, в мозгах.
Если же Вы ищете очередное нажатие на "бутон", так это не пройдет.
Учитесь думать или занимайтесь тем, где этого не требуется.
← →
-=DeMoH=- (2003-09-24 18:20) [11]попробую GLScene...
← →
-=DeMoH=- (2003-09-24 18:30) [12]Посмотрел я этот пример - вещь скорее всего очень полезная, но обе данные ссылки убитые :(
Если кто знает, где енто можно еще достать - срочно делитесь!
Кстати, вопрос к тем, кто уже ставил этот GLScene: я прочитал, что там уже есть пачка примеров. Нет ли там что-нить полезного по моему вопросу, а то у меня не такая мощная связь, чтобы запросто качать все подряд...
← →
Hooch (2003-09-24 18:39) [13]возми TChartPro он умеет строить в 3D даже c поддрежкой OpenGL
← →
-=DeMoH=- (2003-09-24 20:19) [14]А где его взять? (не сочти за ламерский вопрос, но в компонентах, идущих в составе дельфина-7 ентерпрайс, я такого компонента не видел)
← →
pasha_676 (2003-09-25 09:06) [15]http://glscene.sourceforge.net - у меня работает. Оттэдова из даунлоада и качай сам компонент.
> я прочитал, что там уже есть пачка примеров. Нет ли там
> что-нить полезного по моему вопросу, а то у меня не такая
> мощная связь, чтобы запросто качать все подряд...
Да есть там есть... Прям с самим компонентом в поставке... Много полезного и тонны полезного... По ним и учился..
← →
-=DeMoH=- (2003-09-25 16:44) [16]Щас попробую...
← →
-=DeMoH=- (2003-09-25 19:17) [17]уффф, наконец-то я это выкачал. После пяти-деляти (не 50 :) попыток эти компоненты встали на мою делфю, я нашел подходящий для меня компонент в папке Demos\Graph под названием fxy.
Но тут появилвсь другая проблема: к примеру, вышеприведенная формула рисуется в MAPLE-7 как кольцо, тем не менее программа fxy рисует мне половинку яйца (:->)
Чтобы это могло быть?
P.S.: насколько я понял, писать функцию нужно как z=f(x,y), т.е. моя формула
(sqrt(x^2+y^2)+1)^2+z^2=4 нужно преобразовать примерно так:
z=sqrt((1-sqrt(x*x+y*y))*(3+sqrt(x*x+y*y))
так что же не так?
← →
pasha_676 (2003-09-26 10:44) [18]очевидно дело в том, что у тебя (кольцо-яйцо) две координаты Z на каждую X,Y. Копай дальше... Начни с формул попроще... Придумай как поставить "нижнюю" половинку... Вообщем займись программированием.
← →
-=DeMoH=- (2003-09-26 12:05) [19]я думаю, что в MAPLE получается кольцо именно из-за того, что в нем накладывается условие X,Y,Z=[-1;1].
Если у кого есть какие-то предложения - высказывайтесь.
Программа, представленная в примерах очень простая - там за построение графика используется всего две строчки, но тем не менее за пару часов их изменения я получил все что угодно, кроме кольца :)
← →
Asteroid (2003-09-26 13:23) [20]> -=DeMoH=- © (26.09.03 12:05) [19]
У тебя ведь z^2 - значит подходят и отрицательные значения. Вывод - рисуй дважды.
> z=sqrt((1-sqrt(x*x+y*y))*(3+sqrt(x*x+y*y))
|z|
← →
pasha_676 (2003-09-26 14:41) [21]
> я думаю, что в MAPLE получается кольцо именно из-за того,
> что в нем накладывается условие X,Y,Z=[-1;1].
Ну так думай головой то! X,Y - путем задания самого тхейдфилда, а по Z - второй филд "зеркальный"
← →
-=DeMoH=- (2003-09-26 16:23) [22]Так в том то и дело, как это сделать?! Если я пишу две команды, то вторая затирает первую и я уже вижу не первую, а вторую половину, а первая при этом стирается!!!
P.S.: И как добавить условие, чтобы рисовалось не все яйцо, а только его середина? (чтобы из яйца получить кольцо :)
← →
pasha_676 (2003-09-29 09:45) [23]
> И как добавить условие, чтобы рисовалось не все яйцо, а
> только его середина? (чтобы из яйца получить кольцо :)
С помощью операции if then, с помощью наложения текстуры, и если подумать можно нарыть еще пару десятков способов...
> Так в том то и дело, как это сделать?! Если я пишу две команды,
> то вторая затирает первую и я уже вижу не первую, а вторую
> половину, а первая при этом стирается!!!
Второй ТHegthField. Когда начнешь думать?
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.012 c