Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.06.2010, 21:50
fess_d fess_d вне форума
Прохожий
 
Регистрация: 08.06.2010
Сообщения: 6
Репутация: 10
Восклицание Построение графиков

Добрый вечер! Люди помогите! нужно в chart построить график функции заданной так: x=-3*const*r-10*r*r*r , y=1.5*const*r*r-9*r*r*r*r где const это переменная, которая задается пользователем.

Последний раз редактировалось fess_d, 08.06.2010 в 22:17.
Ответить с цитированием
  #2  
Старый 08.06.2010, 23:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Э-э-э... это 3D график получается. По моему, его нельзя в TChart построить.
Ответить с цитированием
  #3  
Старый 09.06.2010, 05:02
fess_d fess_d вне форума
Прохожий
 
Регистрация: 08.06.2010
Сообщения: 6
Репутация: 10
По умолчанию

Кордината x счиается по формуле и y по формуле, а как выразить у через х я не знаю

Последний раз редактировалось fess_d, 09.06.2010 в 05:05.
Ответить с цитированием
  #4  
Старый 09.06.2010, 08:18
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вчера токо писал прогу для суммирования графиков, вот откорректировал чучуть, вроде то что надо:
Код:
var
  Bmp: TBitmap;

procedure TForm1.FormActivate(Sender: TObject);
begin
 Bmp:= TBitmap.Create;
 Bmp.PixelFormat:= pf24bit;
 Bmp.Canvas.Brush.Color:= clBlack;
 Bmp.Width:= Image1.Width;
 Bmp.Height:= Image1.Height;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
 Costanta: Extended;
 X,Y: Integer;
 i: Extended;
begin
 Bmp.Canvas.Rectangle(-1,-1,Image1.Width+1,Image1.Height+1);
 Costanta:= StrToFloat(Edit1.Text);
 Bmp.Canvas.Pen.Color:= clWhite;
 Bmp.Canvas.MoveTo(Image1.Width div 2,0);
 Bmp.Canvas.LineTo(Image1.Width div 2,Image1.Height);
 Bmp.Canvas.MoveTo(0,Image1.Height div 2);
 Bmp.Canvas.LineTo(Image1.Width,Image1.Height div 2);
 i:= -1*(Image1.Width div 2);
 While i < (Image1.Width div 2) Do
  begin
   X:= Round(-3*Costanta*i-10*i*i*i);
   Y:= Round(1.5*Costanta*i*i-9*i*i*i*i);
   i:= i + 0.001;
   Bmp.Canvas.Pixels[(Image1.Width div 2)-X,(Image1.Height div 2)-Y]:= clRed;
  end;
 Image1.Canvas.Draw(0,0, Bmp);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Bmp.Free;
end;
Если i считать как третью координату то всё усложняеться, помню видел функцию перевода 3D координат в 2D(с перспективой).

Последний раз редактировалось AND_REY, 09.06.2010 в 08:26.
Ответить с цитированием
  #5  
Старый 09.06.2010, 09:06
fess_d fess_d вне форума
Прохожий
 
Регистрация: 08.06.2010
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо большое! Только при i>=0 должна быть парабола, а при i<0 петля направленная вниз
Ответить с цитированием
  #6  
Старый 09.06.2010, 10:44
fess_d fess_d вне форума
Прохожий
 
Регистрация: 08.06.2010
Сообщения: 6
Репутация: 10
По умолчанию

А нет что то я попутал, ветви просто должны быть вверх направлены и все. А как нарисовать систему координат и не округлять х и у?

Последний раз редактировалось fess_d, 09.06.2010 в 11:16.
Ответить с цитированием
  #7  
Старый 09.06.2010, 23:14
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

При Const = 100 ветви вверх а при Const = -10 ветви вниз + они пересикаются. Координаты надо округлять для рисования графика т.к точечный рисунок состоит из целых точек но можно и не округлять при сохранении их в файл.
Можеш поиграть с масштабом, может просто не та часть рисуеться.
Ответить с цитированием
  #8  
Старый 10.06.2010, 06:39
fess_d fess_d вне форума
Прохожий
 
Регистрация: 08.06.2010
Сообщения: 6
Репутация: 10
По умолчанию

А как оси с разметкой задать?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025