Лекція 6 Побудова геометричних фігур. Алгоритми інтерактивної комп'ютерної графіки



Скачати 28.69 Kb.
Дата конвертації05.05.2017
Розмір28.69 Kb.
ЛЕКЦІЯ 6

Побудова геометричних фігур. Алгоритми інтерактивної комп'ютерної графіки.


1. Малювання прямокутників
Побудову прямокутників можна виконати процедурою
Rectangle(x1, y1, x2, y2 : integer),где

x1, y1, x2, y2 - відповідно координати правого і нижнього кутів прямокутника.


Наприклад.

Вивести на екран 20 прямокутників різного кольору і що зменшуються по висоті


for i:=1 to 20 do

begin

SetColor(Random(15)); {установка кольору}

Rectangle(200,300+i,300,300);

Delay(100);

ClearDevice;

end;
Для побудови фігури з великою кількістю вершин (замкнутих або незамкнутих) в модулі Graph існує процедура
DrawPoly (NumPoints : Word; var PolyPoints)
Вона дозволяє малювати на екрані будь-яку ламану, задану набором координат деякої безлічі крапок.

Це може бути складна геометрична фігура і таблична математична функція.

Перший параметр Numpoints - кількість точок ламаної (якщо потрібно намалювати замкнутий багатокутник з N вершинами, то Numpoints=n+1, а координати N+1 крапки повинні бути такі ж, як і першої крапки).

Другий безтиповий параметр Polypoints .Під безтиповим параметром розуміється, яка або змінна, що складається з наборів двох компонентних записів.


У модулі Graph існує тип Pointtype - запис, що складається з двох полів.

Type

PointType = record

x, y : integer;{ координатами }

еnd;
Наприклад. Накреслити трикутник.
program DemoDraw;

uses Graph, Crt;

var

GrD, GrM : integer;

MP : array [1..4] of PointType; { масив крапок}

XM, YM : integer;

BEGIN


GrD:=0;

InitGraph(GrD, GrM, ‘ ‘);

XM:=GetMaxX; YM:=GetMaxY;

{визначення координат вершин}

MP[1].x:=XM div 4; MP[1].y:=YM div 4;

MP[2].x:=XM–XM div 4; MP[2].y:=YM div 4;

MP[3].x:=XM div 2; MP[3].y:=YM–YM div 4;

MP[4]:=MP[1];

SetColor(1);

DrawPoly(4, MP); { промальовування трикутника}

Readln;

CloseGraph;

END.

Побудова табличної математичної функції.


Приклад 1. Побудувати графік функції sin(x)
uses Graph;

var

grd, grm : integer;

angle : real; {кут}

f : array[1..200] of PointType;

sch : integer; {лічильник крапок}

BEGIN


grd:=detect;
InitGraph(grd, grm,’ ‘);

sch:=0; { лічильник кількості точок графіка}

angle:=0;

Repeat

inc(sch);

f[sch].x=Round (100*angle)+20;

f[sch].y=Round(100*sin(angle))+GetMaxY div 2;

angle:=angle+0.02*pi;

Until


angle>2*pi;

Line(20,20,20,420); { вісьY}

Line(20,240,620,240); { віс X}

SetColor(4);

DrawPoly(sch, f);

Readln;

CloseGraph;

END.
За допомогою Drawpoly можна вивести частину функції:

DrawPoly(20, f[50]);

викреслити графік по 20-ти крапках, починаючи з 50-ої точки масиву.

Приклад 2. Побудова спіралі.

Побудувати спіраль навколо початку координат радіусом R початковий напрям спіралі утворює з віссю OX кут
Параметричне представлення спіралі :
x= r Cos(t); y= r Sin(t);




program SPIRAL;

uses Graph, Crt;

const

k=0.35; {коефіцієнт закручування спіраль}

var

grd, grm : integer;

angle, r : real; { радіус}

f : array[1..200] of PointType; { множина крапок }

x, y, i :integer; {MaxX і MaxY}

BEGIN


grd:=detect;

InitGraph(grd, grm, ‘ ‘);

x:=GetMaxX; y:=GetMaxY;

angle:=pi;

i:=0;

Repeat

r:=k*angle;

inc(i);

f[i].x:=r*sin(angle)+x div 2;

f[i].y:=r*cos(angle)+y div 2;

angle:=angle+0.04*pi;

Until


angle>24;

SetLineStyle(3,0,3);

SetColor(2);

repeat until Keypressed;

CloseGraph;

END.


База даних захищена авторським правом ©lecture.in.ua 2016
звернутися до адміністрації

    Головна сторінка