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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.11.2007, 15:25
nav nav вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
По умолчанию помогите построить графики

Здравствуйте. Я инвалид, изучаю Delphi самостоятельно. Но следующая программа никак не идёт. Не могли бы вы помочь разобраться. Надо написать программу для построения графиков y=cos(wx) y=sin(wx); Delphi постоянно выдаёт информацию о том, что экранные координаты ix, iy неверны. Экранные координаты рассчитываю по формулам в книжке (x-x1)/(x2-x1)=(ix-ix1)/(ix2-ix1). С клавиатуры ввожу данные: количество точек_n=400, частота_w=4, x0=-6.28, xk=6.28, Ymin=-0.22, Ymax=1;
Код:
procedure TForm1.Button2Click(Sender: TObject);
var x,y,x0,xk,Ymax,Ymin,step,w:real;
     pw,ph,n,code,i,ix,iy:integer;
begin
 val(ntedit.text,n,code); val(wedit.text,w,code);
 val(x0edit.text,x0,code); val(xedit.text,xk,code);
 val(minedit.text,Ymin,code); val(maxedit.text,Ymax,code);
 pw:=paintbox1.Width; ph:=paintbox1.Height;
 with paintbox1.Canvas do
  begin
   refresh; pen.Width:=1; brush.Color:=clRED; pen.Color:=1;
   rectangle(0,0,pw,ph);
   case radiogroup1.ItemIndex of
    0: begin
         pen.Width:=2; pen.Color:=clYELLOW; pen.Style:=pssolid;
         iy:=round((cos(w*x0)-Ymin)/(ymax-ymin)*ph); step:=(xk-x0)/n;
         moveto(0,ph-iy-1); x:=x0;
         for i:=2 to n do
          begin
           x:=x+step; y:=cos(w*x);
           ix:=round((x-x0)/(xk-x0)*pw); iy:=round((ymax-ymin)*ph);
           lineto(ix,ph-iy-1)
          end;
         ix:=0;
        end;
    1: begin
        pen.Width:=3; pen.color:=clGREEN; pen.Style:=pssolid;
        iy:=round((sin(w*x0)-ymin)/(ymax-ymin)*ph); step:=(xk-x0)/n;
        moveto(0,round(ph-iy-1)); x:=x0;
         for i:=2 to n do
          begin
           x:=x+step; y:=sin(w*x);
           ix:=round((x-x0)/(xk-x0)*pw); iy:=round((ymax-ymin)*ph);
           lineto(ix,ph-iy-1)
          end;
         ix:=0;
       end
   end
   end
end;
.

Последний раз редактировалось nav, 27.11.2007 в 15:54.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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