Необходимо построить графики заданной функции в паскале.
Условие задачи:
Построить графики функции, заданной в параметрически, при разных значениях параметра "а" (должна быть реализована возможность вывода нескольких графиков при разных значениях "а") x=a(sh(t) -t), y=a(ch(t)-1) (a>0).
{ procedura dlya otrisovki tochki krivoy, parametricheskoe predstavlenie kotoroy zadano funkchiey F pri znachenii parametra = T }
procedure set_point(t: double; f: tcurve); var x, y: double; begin f(t, x, y); putpixel( (getmaxx div 2) + trunc(scale * x), (getmaxy div 2) - trunc(scale * y), white ); end;
{ otrisovka krivoy so znacheniem parametra, legavshim v intervale [start, finish] i shagom izmeneniya parametra step }
procedure draw_curve(start, finish, step: double; f: tcurve); var t: double; begin { risovanie osi koordinat } setcolor(green); line(0, getmaxy div 2, getmaxx, getmaxy div 2); line(getmaxx div 2, 0, getmaxx div 2, getmaxy);
t := start; { nachalo intervala }
{ poka ne vishli za granichu intervala }
while t <= finish do begin set_point(t, f); t := t + step; { narashivaem parametr} end; end;
procedure giper(t: double; var x, y: double); far; begin { sh(t)=(exp(t)-exp(-t))/2, ch(t)=(exp(t)+exp(-t))/2 } x := a * ((exp(t)-exp(-t))/2-t); y := a * ((exp(t)+exp(-t))/2-1); end;
var mode, driver:integer; begin driver:=detect; initgraph(mode, driver, 'D:\program\bp\bgi');
У меня теперь проблема, как мне организовать возможность вывода нескольких графиков при разных значениях "а" ? Помогите пожалуйста.
volvo
3.05.2007 1:37
Тебя смущает то, что A задана константой, и ее нельзя менять? Тогда опиши A вот так:
Const a: double = 3;
и после того, как отрисовал первую кривую с одним значением A, меняй его (фактически, теперь это - переменная со стартовым значением) и отрисовывай с другим значением...
matic
3.05.2007 2:23
Цитата(volvo @ 2.05.2007 22:37)
Тебя смущает то, что A задана константой, и ее нельзя менять? Тогда опиши A вот так:
Const a: double = 3;
и после того, как отрисовал первую кривую с одним значением A, меняй его (фактически, теперь это - переменная со стартовым значением) и отрисовывай с другим значением...
А по подробней?
volvo
3.05.2007 2:30
const a: double = 3;
...
begin driver:=detect; initgraph(mode, driver, 'D:\program\bp\bgi');
draw_curve(-10, 10, step, giper); { <--- Рисуешь с параметром А = 3 } a := 27; { меняешь параметр } draw_curve(-10, 10, step, giper); { <--- Рисуешь уже с A = 27 } readln;
closegraph; end.
Можешь еще и цвет графика в процедуру draw_curve передавать как параметр, чтобы графики отрисовывались разными цветами при разных A ...
matic
3.05.2007 20:57
Цитата
Можешь еще и цвет графика в процедуру draw_curve передавать как параметр, чтобы графики отрисовывались разными цветами при разных A ...
что-то у меня не получилось... помоги пожалуйста...
volvo
3.05.2007 21:09
Так, например:
procedure set_point(t: double; f: tcurve; color: integer); var x, y: double; begin f(t, x, y); putpixel( (getmaxx div 2) + trunc(scale * x), (getmaxy div 2) - trunc(scale * y), color ); end;
procedure draw_curve(color: integer; start, finish, step: double; f: tcurve); var t: double; begin setcolor(green); line(0, getmaxy div 2, getmaxx, getmaxy div 2); line(getmaxx div 2, 0, getmaxx div 2, getmaxy);
t := start; { nachalo intervala }
{ poka ne vishli za granichu intervala } while t <= finish do begin set_point(t, f, color); t := t + step; { narashivaem parametr} end; end; ...
Здравствуйте! А у Вас не найдётся готовой задачи(.pas) для улитки Паскаля, Декартова листа, спирали Архимеда и др. Заранее благодарен Вам! До свидания!
Артемий
5.05.2007 21:25
Цитата
для улитки Паскаля, Декартова листа, спирали Архимеда и др.
Оригинально!Может перечислил-бы до конца? Или наброски показал?
volvo
5.05.2007 21:26
Зайди по ссылке из сообщения №5, там лежит файл curves.pas ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.