- •Алгоритмические языки и программирование работа со стандартным графическим модулем
- •Брянск 2007
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Отображение информации в графическом режиме
- •2.2. Инициализация графического режима
- •2.3. Подпрограммы графического режима
- •Основные цвета
- •2.4. Примеры
- •2.5. Перевод координат из декартовой координатной системы в полярную и наоборот
- •3. Порядок выполнения работы
- •4. Список заданий
- •5. Контрольные вопросы
- •6. Список рекомендуемой литературы
2.4. Примеры
Пример 1. Изображение на экране прямоугольного треугольника с вершинами (320,10), (120,210), (520,210).
PROGRAM Primer_1;
Uses Graph; {Подключение стандартного графического модуля}
Var
Gd, {Переменная графического драйвера}
Gm: Integer; {Переменная графического режима}
BEGIN
Gd:=Detect; {Графический драйвер: VGA}
InitGraph(Gd, Gm,''); {Инициализация графического режима.}
{В апострофы '' помещается путь к файлу EGAVGA.BGI}
If GraphResult=grOk Then {Если графический режим включился успешно, то нарисовать отрезки прямых}
Begin
Line(120,210,520,210); {Горизонтальный отрезок}
Line(120,210,320,10); {Левый катет треугольника}
Line(320,10,520,210); {Правый катет треугольника}
ReadLn;
CloseGraph;
End;
END.
Пример 2. Изображение разноцветных лучей одинаковой длины.
PROGRAM Primer_2;
Uses Graph;
Const CenterX=320; CenterY=240; Radius=200;
Var
Gd,Gm: Integer;
i : Integer; dx,dy: Integer;
BEGIN
Gd:=VGA;
Gm:=VGAHi;
InitGraph(Gd,Gm,'');
If GraphResult=grOk Then
Begin
for i:=0 to 160 do
begin
dx:=Round(Radius*Sin(i*PI/80));
dy:=Round(Radius*Cos(i*PI/80));
SetColor(i MOD 16);
Line(CenterX, CenterY, CenterX+dx, CenterY+dy)
end;
ReadLn;
CloseGraph;
End;
END.
Пример 3. Построение графика функции, заданного функцией Func.
PROGRAM Primer_3;
Uses Graph;
Var
x, y, a, b, h: Real;
x0, y0, xg, yg,
xmax, ymax, mx, my,
grd, grm: Integer;
{ ----------------------------------------------------- }
Function Func(x: Real): Real;
Begin
Func:=x*Sin(x/12+4)/2;
End;
{ ----------------------------------------------------- }
BEGIN
x0:=60;
y0:=300; {Координаты центра}
mx:=2;
my:=1; {Масштабные коэффициенты по x и y}
a:=0; b:=200; h:=0.1; {Область задания функции по x и шаг}
grd:=Detect;
InitGraph(grd, grm, '');
If GraphResult=grOk Then
Begin
SetColor(15);
xmax:=GetMaxx;
ymax:=GetMaxy;
Line(10, y0, xmax-100, y0); {Ось OX}
Line(x0, 10, x0, ymax-100); {Ось OY}
x:=a;
While x<=b Do
Begin
xg:=x0+Trunc(mx*x);
yg:=y0-Trunc(my*Func(x));
If (xg>=0) AND (xg<=xmax) AND (yg>=0) AND (yg<=ymax) then PutPixel(xg, yg, 10);
x:=x+h;
End;
ReadLn;
CloseGraph;
End;
END.
2.5. Перевод координат из декартовой координатной системы в полярную и наоборот
Как видно из рисунков 1 и 2, точка М в декартовой системе координат задается двумя координатами: абсциссой и ординатой, а в полярной системе координат – радиус-вектором и углом . Формулы перевода значений из одной системы в другую:
из декартовой системы в полярную
из полярной системы в декартовую