Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2007, 20:40   #1
Леха
 
Регистрация: 09.04.2007
Сообщений: 7
По умолчанию График функции

Господа,проблема следующая:
требуется вывести график функции двух переменных, например
exp(sqr(x)+sqr(y))+2*x-3.5*y;
создаю массив z[i,j] значений функции, пробую выводить и ничего не получается: то вообще ничего не рисует, то какую-то ахинею.
Пробовал и в Canvas'е и в Chart'е.
Заранее спасибо.
ЗЫ:должно получиться что-то типа карты высот.
Леха вне форума Ответить с цитированием
Старый 09.04.2007, 23:27   #2
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
По умолчанию

а зачем массив значений? берешь шаг поменьше и прям по функции строишь например в canvas однопиксельными квадратами.
тоесть как ф-я считается в цикле так график и рисуй сразу (некоторые пиксели будут рисоваться по несколько раз но эффект от этого не изменится)
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 10.04.2007, 07:53   #3
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Попробуй сначала просмотреть значения, которые получаются. Возможно у Вас всего лишь проблема с преобразованием типов.
Трофимов Александр вне форума Ответить с цитированием
Старый 10.04.2007, 07:57   #4
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Леха - ты представляешь, что должно получиться ?
возми Maple сначала, посмотри - что за ПОВЕРХНОСТЬ

как ты ее рисовал на Canvas - нам только догадываться,
но есть метод плавающего горизонта.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 10.04.2007, 15:36   #5
Леха
 
Регистрация: 09.04.2007
Сообщений: 7
По умолчанию

Чиж
Спасибо, так логичнее.Но если брать шаг поменьше и не уменьшать область значений,
то появляетя ошибка 'Stack owerflov'.
Александр
Пробовал, вроде все нормально.
Virtson
Эээ..что за Maple и что представляет из себя этот метод.
Леха вне форума Ответить с цитированием
Старый 10.04.2007, 15:41   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Maple - это программа для мат. расчетов и не только,
там бы ввел прямо уравнение и получил картинку.

метод плавающего горизонта - получаем диметрическую проекцию поверхности (вид свершу сбоку),
ривуем линиями от дальнего конца к ближнему.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 10.04.2007, 17:01   #7
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Кароче Владимир имеет ввиду, что "график функции от 2-х переменных - поверхность (3Д), а ты пытаешься её на канве (2Д) нарисовать.
Входы:
1) OPENGL - строить 3Д модель
2) Строить для каждого... допустим х свой график (сечение поверхности плоскостью)
т.е. мы как бы рассекаем нашу поверхность множествами параллельных плоскостей, полученное множество кривых (пересечение каждой плоскости и поверхности) - множество графиков.
Строится элементарно, одна из переменных заменяется на константу. например так:
было z=exp(sqr(x)+sqr(y))+2*x-3.5*y
стало z=exp(sqr(1)+sqr(y))+2*x-3.5*y
потом вместо х ставишь 2, 3 и т.д.
Так получишь много графиков функции от ДВУХ переменных.

Конечно же нагляднее было бы 3Д...
zetrix вне форума Ответить с цитированием
Старый 10.04.2007, 18:19   #8
Леха
 
Регистрация: 09.04.2007
Сообщений: 7
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Кароче Владимир имеет ввиду, что "график функции от 2-х переменных - поверхность (3Д), а ты пытаешься её на канве (2Д) нарисовать.
Мене и надо двумерную проекцию...,тока при фиксированом z
Virtson
Эта Maple много весит, ссылочку не кинешь?
Леха вне форума Ответить с цитированием
Старый 10.04.2007, 19:53   #9
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

ну... тогда перебираем х и у маленькима шажками и подставляем
for x:=0 to 5 do
for y:=0 to 5 do
if z=exp(sqr(x)+sqr(y))+2*x-3.5*y then вывод пикселя на канву.

1) отрезок построения определяется экспериментально
2) шаг (в примере равен 1) надо сделать меньше (например 0.1)
zetrix вне форума Ответить с цитированием
Старый 11.04.2007, 12:53   #10
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

при фиксированном Z (например 5) получаем
5 = exp(sqr(x)+sqr(y))+2*x-3.5*y

1) находим одну точку (x, y) , удовл.-ю уравнению.
2) движемся от нее в сторону - возможно 8 вариантов берем самый подходящий (тут все равно округление)
3) повторяем пункт 2), пока не придем в начальную точку.

** также важен масштаб вывода.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить график функции, используя компонент TChart. vitalik007 Компоненты Delphi 3 09.06.2014 11:20
Графика в паскале (построить график функции) matic Помощь студентам 4 26.11.2012 17:02
График функции в C++ Builder.. ПОМОГИТЕ! Cyberbest Помощь студентам 2 25.06.2009 21:06
график функции с малой величиной _ares_ Общие вопросы Delphi 6 24.04.2008 19:31