Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графика в Pascal.doc
Скачиваний:
33
Добавлен:
10.06.2015
Размер:
990.21 Кб
Скачать

Программы построения кривых на плоскости.

остроить кривые по их уравнениям в полярных координатах:

Полярные координаты p, точки М на плоскости – это расстояние p=OM от фиксированной точки О (полюса до точки М и угол =РОМ между лучами ОМ и ОР (полярная ось). Например: М(2, /4).

Полярные координаты являются наиболее употребительными после декартовых координат. Это нелинейные координаты, порождающие криволинейные преобразования. При построении кривых, заданных в полярных координатах, полярные координаты переводят в декартовы. Если полюс имеет декартовы координаты (x0,y0), преобразования таковы:

x=x0+pcos; y=y0+psin.

Program Examp_26;

Uses crt, graph;

Var

k1,k2: Longint;

Procedure Graphinterface;

Var

driver, mode, error:Integer;

s:String;

i:0..6;

Begin

driver:=detect;

s:='';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end;

SetColor(12);

for i:=0 to 6 do

begin

if i=12 then SetColor(6);

Rectangle(i,i,640-i,480-i);

end;

SetViewPort(8,8,630,470,ClipOff);

SetColor(11);SetBkColor(8);TextColor(11);

end; {Graphinterface}

Procedure Graphic;

Function R0(fi:Real):Real;

begin

R0:=3*cos(6*fi)+9;

(* {1} R0:=1; {окружность} *)

(* {2} R0:=fi; {спираль Архимеда} *)

(* {3} R0:=sin(7*fi);{семилепестковая роза} *)

(* {4} R0:=1-cos(fi); {кардиоида} *)

(* {5} R0:=5*cos(fi)+2; {улитка Паскаля} *)

if cos(2*fi)>=0 then

R0:=sqrt(2*cos(2*fi));

{лемниската Бернулли}

end;

Const c=2*pi;step=0.0005;

x0=320;y0=220;r=220;

Var k,Max,fi:Real;

begin

fi:=0;max:=0.0001;

{вычисление наибольшего значения функции}

Repeat

if max<abs(R0(fi)) then max:=abs(R0(fi));

fi:=fi+0.01;

Until fi>c;

fi:=0; {построение графика}

Repeat

k:=R0(fi)/max;

if k<=1 then

PutPixel(x0+Round(r*cos(k1*fi)*k),

y0+Round(r*sin(k2*fi)*k),15);

if KeyPressed then Exit else fi:=fi+step

Until fi>c

end; {Graphic}

Begin

Graphinterface;

Repeat

OutTextXY(180,14,'Введите два

коэффициента __');

GoToXY(50,2); Readln(k1,k2);

ClearViewPort;

Graphic;

OutTextXY(130,450,'Esc - выход,

Enter - изменить коэффициенты')

Until ReadKey=#27;

CloseGraph

End.

Полярный радиус и полярный угол являются первичными координатами: в цикле с шагом step изменяется полярный угол fi. Для записи уравнений в программе имеется функция R0. Ее наибольшее значение предварительно вычисляется для определения коэффициента масштабирования, который позволяет разместить график в пределах всего экрана. Вместо использования при построении декартовых координат rcos(fi), rsin(fi), вводятся еще два дополнительных параметра k1 и k2 в основные формулы: rcos(k1fi), rsin(k2fi). Тогда при k1=k2=1 программа будет строить стандартные графики, а при других значениях k1 и k2 выдавать множество разнообразных рисунков.