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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 14:13   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
Смех легкая задача - график параболы

Нужно построить параболу вот из этого рисунка рисунок.png с прямоугольником все понятно, там используем процедуру rectangle! график параболы y=(x*x)/-2 но я не очень понимаю, как ее построить. Помогите пожалуйста!
да, мне все равно, можно на Паскаль или на С++, там принцип одинаковый!
gylayko вне форума Ответить с цитированием
Старый 27.02.2012, 14:24   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Код:
     y:=(-1)*X*X+20
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 27.02.2012, 14:48   #3
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

а вместе с циклом? то есть полноценный код рисования параболы!
gylayko вне форума Ответить с цитированием
Старый 27.02.2012, 15:13   #4
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от gylayko Посмотреть сообщение
а вместе с циклом? то есть полноценный код рисования параболы!

Код:
  cx,cy:integer; // каординаты центра осей
  dx,dy:real; // умножители x,y
implementation

{$R *.dfm}

// процедура перерисовки стрелки Cn:Tcanvas; - холст для рисования (Form1.canvas; Form1.Image1.Canvas)
// x1,y1 начало стрелки
// X2,y2 - конец стрелки
// fhs - длина стрелочки по умолчанию 25
// a - угол стрелки по умолчанию 30
// фаункция перерисовки осей каординат
procedure DrawPole(Cn:Tcanvas);
var x,y:integer;
Procedure DrawStrelka(Cn:Tcanvas;x1,y1,x2,y2:integer;fhs:integer=25;a:integer=30);
  var ugol:real;
begin
     Cn.MoveTo(x1,y1);
     Cn.LineTo(x2,y2);
     if (abs(x2-x1)+abs(y1-y2))>0 then begin
     if (x2-x1)<>0 then
     ugol:=arctan(((y2-y1)/((x2-x1))))
     else ugol:=pi/2;
     if x2-x1>0 then ugol:=ugol+pi;
     if (y2-y1>0) and ((x2-x1)=0) then ugol:=-pi/2;
     Cn.LineTo(round((x2+(cos(ugol-30*pi/180)*fhs))),round(y2+(sin(ugol-30*pi/180)*fhs)));
     Cn.MoveTo(x2,y2);
     Cn.LineTo(round((x2+(cos(ugol+30*pi/180)*fhs))),round(y2+(sin(ugol+30*pi/180)*fhs)));
  end;
end;

begin

// рисуем  ось ординат  (Y)
   DrawStrelka(cn,cx,Cn.cliprect.bottom-30,cx,10,10);
// рисуем  ось абсцисс (Х)
   DrawStrelka(cn,0,cy,Cn.cliprect.Right-30,cy,10);
   // деления между каординат
   cn.TextOut(cx+5,cy+5,'0');
   for x:=0 to ((Cn.cliprect.Right-30) div 10 )-3 do begin
     cn.MoveTo(x*10,cy-10);
     cn.lineTo(x*10,cy+10);
     if x mod 5 = 0 then begin
       cn.TextOut(x*10+2,cy-20,inttostr(round(((x*10 ) -cx) / dx ) ));
       cn.MoveTo(x*10,cy-15);
       cn.lineTo(x*10,cy+15);

     end;
     // подписываем точки по Х

   end;
   for y:=0 to ((Cn.cliprect.Bottom-30) div 10)-3 do begin
     cn.MoveTo(cx-10,30+10*y);
     cn.lineTo(cx+10,30+10*y);
    if y mod 5 = 0 then begin
     cn.TextOut(cx+2,y*10,inttostr(round((cy-y*10)/dy)));
     cn.MoveTo(cx-15,30+10*y);
     cn.lineTo(cx+15,30+10*y);
     end;

     // подписываем точки по Y
   end;

end;
procedure TForm1.FormCreate(Sender: TObject);
var y,x:integer;
begin
   dx:=15;
   dy:=2;
   cx:=form1.Image1.Canvas.cliprect.right div 2;
   cy:=200;

  DrawPole(form1.Image1.Canvas);
  for x:=-30 to 30 do begin
     y:=round(x*x*(-1))+50;
     if x=-30 then
     form1.Image1.Canvas.MoveTo(round((x*dx+cx)),(cy-round(y*dy)));
     form1.Image1.Canvas.lineTo(round((x*dx+cx)),(cy-round(y*dy)));
  end

end;
программа на Delphi для рисовании Параболы
Вложения
Тип файла: zip Project1.zip (204.4 Кб, 49 просмотров)
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 27.02.2012 в 15:15.
denisbrain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Легкая для вас задача в С++ Aaaaaa111 Помощь студентам 3 22.02.2012 11:33
легкая задача на реализацию videolord Общие вопросы C/C++ 4 18.12.2011 16:02
задача не самая легкая Arinca Паскаль, Turbo Pascal, PascalABC.NET 0 17.04.2011 22:25
Помогите легкая задача?но не выходит ulyanich Microsoft Office Excel 1 24.12.2009 13:06
легкая задача vAdiM_Kubski Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2009 22:49