Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отобразить 3D функцию на экране? [D6, D7, Win95/98, WinXP]


Страницы:   1 2

-=DeMoH=- ©   (2003-09-23 22:48:00) 

Вот суть моей проблемы: делается математическая программа, которая рассчитывает уравнение движения некоторого тела (скажем, шарика в кубе). И вот когда это уравнение движения уже создпно, требуется красиво это вывести на форму. Как это можно сделать?
Пока я использую компонент TChart но так как он не может отображать трехмерные графики, приходится использовать три таких компонента и в итоге отображается три графика (по X, по Y и по Z) а это, естественно очень не наглядно...
Если у кого есть идеи, напишите как, например, нарисовать по стандартной математической функции эллипс или что-нить в этом роде...


pasha_676   (2003-09-29 09:45:00) [1]


> И как добавить условие, чтобы рисовалось не все яйцо, а
> только его середина? (чтобы из яйца получить кольцо :)

С помощью операции if then, с помощью наложения текстуры, и если подумать можно нарыть еще пару десятков способов...


> Так в том то и дело, как это сделать?! Если я пишу две команды,
> то вторая затирает первую и я уже вижу не первую, а вторую
> половину, а первая при этом стирается!!!

Второй ТHegthField. Когда начнешь думать?


-=DeMoH=-   (2003-09-26 16:23:00) [2]

Так в том то и дело, как это сделать?! Если я пишу две команды, то вторая затирает первую и я уже вижу не первую, а вторую половину, а первая при этом стирается!!!
P.S.: И как добавить условие, чтобы рисовалось не все яйцо, а только его середина? (чтобы из яйца получить кольцо :)


pasha_676   (2003-09-26 14:41:00) [3]


> я думаю, что в MAPLE получается кольцо именно из-за того,
> что в нем накладывается условие X,Y,Z=[-1;1].

Ну так думай головой то! X,Y - путем задания самого тхейдфилда, а по Z - второй филд "зеркальный"


Asteroid   (2003-09-26 13:23:00) [4]

> -=DeMoH=- © (26.09.03 12:05) [19]
У тебя ведь z^2 - значит подходят и отрицательные значения. Вывод - рисуй дважды.

> z=sqrt((1-sqrt(x*x+y*y))*(3+sqrt(x*x+y*y))
|z|


-=DeMoH=-   (2003-09-26 12:05:00) [5]

я думаю, что в MAPLE получается кольцо именно из-за того, что в нем накладывается условие X,Y,Z=[-1;1].
Если у кого есть какие-то предложения - высказывайтесь.
Программа, представленная в примерах очень простая - там за построение графика используется всего две строчки, но тем не менее за пару часов их изменения я получил все что угодно, кроме кольца :)


pasha_676   (2003-09-26 10:44:00) [6]

очевидно дело в том, что у тебя (кольцо-яйцо) две координаты Z на каждую X,Y. Копай дальше... Начни с формул попроще... Придумай как поставить "нижнюю" половинку... Вообщем займись программированием.


-=DeMoH=-   (2003-09-25 19:17:00) [7]

уффф, наконец-то я это выкачал. После пяти-деляти (не 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))
так что же не так?


-=DeMoH=-   (2003-09-25 16:44:00) [8]

Щас попробую...


pasha_676   (2003-09-25 09:06:00) [9]

http://glscene.sourceforge.net- у меня работает. Оттэдова из даунлоада и качай сам компонент.



> я прочитал, что там уже есть пачка примеров. Нет ли там
> что-нить полезного по моему вопросу, а то у меня не такая
> мощная связь, чтобы запросто качать все подряд...


Да есть там есть... Прям с самим компонентом в поставке... Много полезного и тонны полезного... По ним и учился..


-=DeMoH=-   (2003-09-24 20:19:00) [10]

А где его взять? (не сочти за ламерский вопрос, но в компонентах, идущих в составе дельфина-7 ентерпрайс, я такого компонента не видел)


Hooch   (2003-09-24 18:39:00) [11]

возми TChartPro он умеет строить в 3D даже c поддрежкой OpenGL


-=DeMoH=-   (2003-09-24 18:30:00) [12]

Посмотрел я этот пример - вещь скорее всего очень полезная, но обе данные ссылки убитые :(
Если кто знает, где енто можно еще достать - срочно делитесь!
Кстати, вопрос к тем, кто уже ставил этот GLScene: я прочитал, что там уже есть пачка примеров. Нет ли там что-нить полезного по моему вопросу, а то у меня не такая мощная связь, чтобы запросто качать все подряд...


-=DeMoH=-   (2003-09-24 18:20:00) [13]

попробую GLScene...


Jeer   (2003-09-24 14:11:00) [14]

-=DeMoH=- © (24.09.03 13:54) [7]
А что должно быть конкретного ?
ObjPas универсальный язык, а не распальцовка на сходке.

Все в Ваших руках и, надеюсь, в мозгах.

Если же Вы ищете очередное нажатие на "бутон", так это не пройдет.
Учитесь думать или занимайтесь тем, где этого не требуется.


pasha_676   (2003-09-24 14:03:00) [15]


> т.е. ничего конкретного в делфине нет?

Есть, но если ты читать не умеешь...
Есть четыре основных способа построения 3D пространства
1) Считать самому и выводить на экран через канвас - трудоемко и долго
2) OpenGL
3) DirectX
4) Подцепить через ОЕМ или COM уже существующую программу (тот же макс или инвентор) и крутить там. Требует серьезного изучения и серьезных док по этим программам с раскладкой по интерфейсам.

Наиболее легкий в освоении, универсальный и быстрый путь лежит через компоненты надстройки на OpenGL и DirectX. Одним из них, пожалуй самым продвинутым и простым, как раз и является GLScene.


pasha_676   (2003-09-24 13:55:00) [16]

http://glscene.sourceforge.net/gallery_users.htm

Примеры на GLScene. Обрати внимание на пример FormEx3D
Помоему то что нужно...


-=DeMoH=-   (2003-09-24 13:54:00) [17]

т.е. ничего конкретного в делфине нет? Тогда буду рад, если мне кто-нибудь поможет с алгоритмом...


Jeer   (2003-09-24 12:23:00) [18]

1. Изучать принципы построения поверхностей и реализовывать самому.
2. Воспользоваться советом pasha_676 © (24.09.03 11:42) [4]
Но от изучения принципов это не избавит


-=DeMoH=-   (2003-09-24 12:17:00) [19]

Скажем так, нужно построить поверхность такого рода:
(sqrt(x^2+y^2)+1)^2+z^2-4=0 где x,y,z лежат в интервале от -1 до 1.
В математическом пакете Maple-7 получается что-то типа обручального кольца :)
Как это можно построить в Delphi


pasha_676   (2003-09-24 11:42:00) [20]

Самое простое решение для реализации лежит в области использования компонента GLScene. И функцию там на рисуешь и движение тела и подразными углами посмотришь... В отличии от изучения чистого OpenGL или DirectX очень быстро можно все навоять и эффект будет хорошим.
Вообщем рекомендую покрутить его и примеры к нему...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо