Практика программирования (Бейсик, Си, Паскаль)



         

Определение области графического вывода и выбор системы координат - часть 3


WIND0W (XMIN,YMIN)-(XMAX,YMAX)

Построение одного периода синусоиды, например, может выглядеть следующим образом:

Программа 8_03.bas

RЕМ Построение синусоиды

SCREEN 12

VIEW (10,10)-(410,210),2,1

LINE (400,100)- (0,100) ' Построение оси х и возврат СР в ее начало

WIND0W (0,-1)-(б.З,1) ' 0бъявление пределов изменения функции

F0R X=.l Т0 6.3 STEP .1

Y=SIN(X) ' Вычисление значения функции

LINE -(X,Y) ' Проведение отрезка прямой из СР в (X,Y)

NEXT X

END

В пакете BGI область графического вывода устанавливается процедурой

setviewport:

ТС: setviewport(xmin,ymin,xmax,ymax,clip);

TP: SetViewPort(xmin,ymin,xmax,ymax,clip);

Экранные координаты точек (xmin,ymin) и (xmax,ymax) определяют, соответственно, положение левого верхнего и правого нижнего углов прямоугольной области вывода. Система координат в зоне вывода привязана своим началом к левому верхнему углу прямоугольника, и ее ось у, к сожалению, направлена вниз. Параметр clip, который может принимать только два значения (в Си — о или не о, в Паскале — true или false), управляет режи-

мом отсечения графических изображений, выходящих своими частями за пределы области вывода. При clip = о или clip = false отсечение не производится. 0бъявление окна графического вывода в ТС и ТР автоматически чистит окно и переводит текущую точку в начало координат. По умолчанию фон окна черный, а линии рисуются белым цветом.

Программа построения периода синусоиды на Паскаче, например, может выглядеть следующим образом:

Программа 8_03.pas

program sinl;

uses graph; var

gd,gm,xe,ye,k:integer;

x,y,dx:double;

begin

gd:=0;

InitGraph(gd,gm,'');

dx:=0.1;

SetViewPort(10,10,410,210, false) ;

LineTo(0,200); {0бводим границы установленного окна}

LineTo(400,200); LineTo(400,0);

LineTo(0,0);

{Проводим ось х и возвращаем СР в ее начало}

Line(400,100,0,100);

for k:=0 to 63 do

begin

x:=k*dx;

y:=sin(x);

xe:=round(x*400/6.28);

{Преобразуем программные координаты к экранным - хе, уе }

ye:=round(100-y*100);




Содержание  Назад  Вперед