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

Вниз

3D график по x,y,z   Найти похожие ветки 

 
shkeeper   (2004-04-22 22:33) [0]

Очень нужно! Есть ли какой нибудь спрособ "малой кровью" построить 3Д график (по x,y,z)?
Вариант строить в Excel слишком банален и неудобен. Может кто подскажет где что мона взять?


 
shkeeper   (2004-04-22 23:15) [1]

ну и... что никто не сталкивался... это ужасно..


 
Yegorchic ©   (2004-04-22 23:19) [2]

Посмотри программу в кладовке...
как называется не помню... вроде "Математика 0.5"...
там есть построение 3D графика...


 
SergLight ©   (2004-04-23 10:26) [3]

TChart


 
Курдль ©   (2004-04-23 11:30) [4]


> Очень нужно! Есть ли какой нибудь спрособ "малой кровью"
> построить 3Д график (по x,y,z)?

А что Вы называете "малой кровью"? Такие проги писать - одно сплошное эстетическое удовольствие (жаль, что их редко заказывают). Все проще пареной репы - берете TImage и на его Canvas-е строите все, что заблагорассудится!


 
Algol   (2004-04-23 12:09) [5]


> одно сплошное эстетическое удовольствие


Я б так не сказал. Создание интерактивных графиков произвольного типа, с шаблонами, с поддержкой внедрения, да еще и 3D  - задача не тривиальная, и довольно сложная.


 
Курдль ©   (2004-04-23 12:12) [6]


> Я б так не сказал. Создание интерактивных графиков произвольного
> типа, с шаблонами, с поддержкой внедрения, да еще и 3D  
> - задача не тривиальная, и довольно сложная.


Но для меня приятнее, чем создание каких-нить бухгалтерских интерактивных отчетов произвольного типа, с шаблонами, с поддержкой внедрения :)


 
shkeeper   (2004-04-23 15:20) [7]

После того как я обрал весь Инет в поисках удобного и НОРМАЛЬНОГО компонента я зациклился на TChart Pro 6.0. Но он выдает все время ошибки, избавится от них никак не могу. А посему пришел к выводу, что еще никто такого компонента не придумал, а те что есть не могут построить диаграмму по 3-м осям, если записей например больше 5000.
Так что нечего тут говорить, что это просто... было бы просто уже б кто нибудь подсказал что-то конкретоное, а все грамотные, пока по делу не начнем говорить... :(


 
Курдль ©   (2004-04-23 15:26) [8]


> а все грамотные, пока по делу не начнем говорить... :(

Я Вам абсолютно грамотно подсказал, как грамотно пстроить диаграмму по 3-м осям! Надо брать и строить, а не компоненты искать!
Если медленно работает - переходите на ассемблер!
Как сделаете лучший и менее глючный, чем есть - напишите мне - я куплю за большие деньги!


 
WebErr ©   (2004-04-23 16:41) [9]

Всё оч. просто:
Дано: исходный вектор P = (x, y, z), найти простейший вариант отображения на плоскость экрана.
Решение:
Пусть некий объект расположен неподалёку от точки O = (0, 0, 0).
(Иначе делаем перенос координат!)
Пусть "камера" направлена в эту точку и имеет сферические координаты с углами (a, b).
Поворачиваем P, используя матрицу поворота T(a, b) =

||     cos(a)       -sin(a)       0    ||
|| sin(a)*cos(b) cos(a)*cos(b) -sin(b) ||
|| sin(a)*sin(b) cos(a)*sin(b)  cos(b) ||

Q = T*P.
Q = (X, Y, Z).
Итак мы отобразили (непроективно - это посложнее!) P на плоскость экрана.
Теперь можно сделать косметическое преобразование:

xs = X*k + x0
ys = Y*k + y0

И всё! :))))


 
WebErr ©   (2004-04-23 17:03) [10]

Z координату мы используем для Z-буффера, если надо.
А при проективном преобразовании нужно знать ещё и 3-ю сферическую координату "камеры" r, т.е. C = (r, a, b) в сферических координатах.
Также надо знать длину до фокуса камеры = d.
Получаем преобразование R = R(Q), при некоем p = r/(r-Z).

xr = X*p
yr = Y*p
zr = r-d-Z

R = (xr, yr, zr).
Т.е. проекция применяется после поворота и перед "косметическим" масштабированием. :))))
Литература: "Программирование компьютерной графики" Виктора Порева.


 
WebErr ©   (2004-04-23 17:06) [11]

Разумеется точки, которые после поворота получили координату Z >= r-d не отображаются на экран, т.к. находятся за камерой! :))))
Прошу послать данный материал автору сабжа! :))))


 
WebErr ©   (2004-04-23 17:17) [12]

Могу ещё про вертексное построение с закраской Гуро или Фонга рассказать, но лучше сами почитайте книжку - она того стоит!!! :))))


 
Дмитрий   (2004-04-23 17:27) [13]

Компоненты есть... И очень даже хорошие... Просто искать надо уметь... Я бы тебе выслал одну, да она на домашнем компе висит... А его я увижу, ой, как нескоро... К сожалению не помню как зовётся...
Ещё вариант - OpenGl... Малой крови не обещаю, зато надёжно и со вкусом...


 
WebErr ©   (2004-04-23 17:27) [14]

Если что-то непонятно спрашивайте!


 
WebErr ©   (2004-04-23 17:29) [15]


> Дмитрий   (23.04.04 17:27) [13]

Это всё здорово, но всегда нужно знать как это всё работает! Это касается не только OpenGL & DirectX, но и всеми любимой VCL - WinAPI знать надо не хуже родных библиотек! :))))


 
WebErr ©   (2004-04-23 18:14) [16]

Кстати, если неизвесны сферические координаты камеры, а только декартовы (xc, yc, zc), то это даже лучше, тогда оператор T(a, b) считается быстрее, т.к.
< пусть rxy = sqrt(sqr(xc)+sqr(yc)),
 тогда r = sqrt(sqr(r0)+sqr(zc)) >

cos(a) = yc/rxy, sin(a) = xc/rxy
cos(b) = zc/r,   sin(b) = rxy/r

С уважением, Керимов Владимир. (с) :)))) (спец по 3D графике)


 
WebErr ©   (2004-04-23 18:16) [17]

Где r = sqrt(sqr(rxy)+sqr(zc)) - расстояние от начала координат, до камеры! :))))


 
WebErr ©   (2004-04-23 18:50) [18]

Если rxy < eps (rxy близко к нулю), то можно взять любые (a, b), в том числе и (0, 0). :))))


 
csr ©   (2004-04-24 12:32) [19]

Давай, я те такую прогу напишу гы ;) Это ж проще пареной репы! Математику надо было учить :). Естессно за вознаграждение! ;)


 
Piter ©   (2004-04-24 14:01) [20]

22.04.04 22:33
Очень нужно! ...

22.04.04 23:15
ну и... что никто не сталкивался

нда..



Страницы: 1 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.395 c
6-1079380703
lena19
2004-03-15 22:58
2004.04.11
serversocket кривыми ручками


14-1079423649
Gorlum
2004-03-16 10:54
2004.04.11
Помогите настроить


1-1082678989
Бегун
2004-04-23 04:09
2004.04.11
TListBox


1-1082957632
voprosik
2004-04-26 09:33
2004.04.11
Динамический PopUp


1-1079728986
Igoryok
2004-03-19 23:43
2004.04.11
Консольное - включить русский