![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отобразить 3D функцию на экране? [D6, D7, Win95/98, WinXP]
-=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 очень быстро можно все навоять и эффект будет хорошим.
Вообщем рекомендую покрутить его и примеры к нему...