Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

Как отобразить 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 вся ветка

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.027 c
1-2167
Vitalik
2004-01-21 15:24
2004.02.02
клас инкапсулирующий в себе........


1-2184
dreds
2004-01-21 10:37
2004.02.02
Как скопировать файл на диск(дискету,диск) с заменой уже существу


3-1948
Sfera
2004-01-09 11:43
2004.02.02
Сложение строк в одном столбце


3-1980
sergg
2004-01-08 10:37
2004.02.02
Можно ли сделать такую выборку одним SQL-запросом?


1-2110
Натуся
2004-01-19 21:21
2004.02.02
Doule в string