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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 20:41   #1
sergio212
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 10
По умолчанию Работа с графикой - крафик на координатной оси (Delphi 7)

Нужно сделать засечки и оцифровку осей.
У меня сейчас вот так:



А нужно чтобы было что-то на подобии вот этого:



Код:
.................
{$R *.dfm}

// Функция, график которой надо построить
Function f(x:real):real;
begin
  f:=2*Sin(x)*exp(x/5);
end;

// строит график функции
procedure GrOfFunc;
var
  x1,x2:real; // границы изменения аргумента функции
  y1,y2:real; // границы изменения значения функции
  x:real; // аргумент функции
  y:real; // значение функции в точке x
  dx:real; // приращение аргумента
  l,b:integer; // левый нижний угол области вывода графика
  w,h:integer; // ширина и высота области вывода графика
  mx,my:real; // масштаб по осям X и Y
  x0,y0:integer; // точка - начало координат

begin
  // область вывода графика
  l:=10; // X - координата левого верхнего угла
  b:=Form1.ClientHeight-20; // Y - координата левого верхнего угла
  h:=Form1.ClientHeight-40; // высота
  w:=Form1.Width-400; // ширина
  x1:=0; // нижняя граница диапазона аргумента

  x2:=25; // верхняя граница диапазона аргумента
  dx:=0.01; // шаг аргумента

  // найдем максимальное и минимальное значения
  // функции на отрезке [x1,x2]
  y1:=f(x1); // минимум
  y2:=f(x1); // максимум
  x:=x1;
  repeat
    y := f(x);
    if y < y1 then y1:=y;
    if y > y2 then y2:=y;
    x:=x+dx;
  until (x>=x2);
  // вычислим масштаб
  my:=h/abs(y2-y1); // масштаб по оси Y
  mx:=w/abs(x2-x1); // масштаб по оси X
  // оси
  x0:=1;
y0:=b-Abs(Round(y1*my));
with form1.Canvas do
begin

  //оси
  MoveTo(l,b);LineTo(l,b-h);
  MoveTo(x0,y0);LineTo(x0+w,y0);
  TextOut(1+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
  TextOut(1+5,b,FloatToStrF(y1,ffGeneral,6,3));

  // построение графика
  x:=x1;
  repeat
    y:=f(x);
    Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
    x:=x+dx;
  until (x>=x2);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GrOfFunc;
end;

end.
На втором рисунке я рисовал в paint, там должны быть другие числа, т.е, соответствовать действительности, как например максимальное 121,151 и минимальное -227,103

Буду рад любой помощи.
sergio212 вне форума Ответить с цитированием
Старый 19.02.2013, 09:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а у меня сейчас вот так:
Изображения
Тип файла: jpg private_image.jpg (39.3 Кб, 72 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.02.2013, 09:19   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а у меня сейчас вот так:
Я выбираю приватный доступ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2013, 14:22   #4
sergio212
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а у меня сейчас вот так:
Прошу прощения ((
На сайте на котором я разместил свои рисунки, были помечены "могу видеть только я"
sergio212 вне форума Ответить с цитированием
Старый 19.02.2013, 14:22   #5
sergio212
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 10
По умолчанию

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

Последний раз редактировалось sergio212; 19.02.2013 в 14:27.
sergio212 вне форума Ответить с цитированием
Старый 19.02.2013, 14:27   #6
sergio212
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я выбираю приватный доступ.
Прошу прощения ((
На сайте на котором я разместил свои рисунки, были помечены "могу видеть только я"
sergio212 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с графикой в delphi Борис Владимирович Помощь студентам 0 01.12.2011 21:13
Работа с графикой Delphi nktpk Помощь студентам 0 28.12.2010 14:34
Работа с графикой в delphi Igoreha010 Помощь студентам 1 16.11.2010 08:37
Работа с графикой в Delphi AlterProger Помощь студентам 3 20.01.2010 15:59
Работа с графикой (Delphi) Xarm Помощь студентам 5 16.10.2009 14:16