Пример 1. Составить программу построения узора, образованного пересечением двух семейств расходящихся отрезков, у которых k1 и k2 - расстояния между отрезками слева и справа, а h – смещение-наклон вниз (вверх) всего семейства.
Решение. Построение горизонтальной линии осуществляется процедурой line (0, k, 640, k). Если нужно построить n линий, то эту процедурe надо поместить в цикл: for i :=1 to n do line (0, i*k, 640, i*k). Наклон линий получается добавлением шага h ко второй координате (h>0, то наклон вниз, h<0, то наклон вверх): for i :=1 to n do line (0, i*k, 640, i*k+h). Расширение и сужение прямых ljcnbuftncz путем задания различных значений k1 и k2 величины k: for i :=1 to n do line (0, i*k1, 640, i*k2+h). Второе семейство получается, если наклон линий производить по первой координате: for i :=1 to n do line (0, i*k2+h, 640, i*k1).
Uses crt, graf;
Var gD, gM, i, k1, k2, h: integer;
Begin
k1:= 8; k2 := 3; h:=110; gD:= Detect;
InutGraf (gD, gM, ‘’); setcolor(red);
For i := 1 to (480 div k1) do
Begin
for i :=1 to n do line (0, i*k1, 640, i*k2+h):
for i :=1 to n do line (0, i*k2+h, 640, i*k1);
end;
readln; Closegraph
end.
Пример 2.Построить график функцииy = x2 на интервале [a, b].
Решение. Для построения графика функции нужно разбить интервал [a, b] на n частей (h – шаг разбиения (b-a)/n), а затем проводить с помощью процедур line и lineto отрезки прямой, который и образуют ломаную линию графика функции. Можно, конечно воспользоваться и выводом точки (точечное построение графика). В программе построим функцию вычисления ее значений в произвольной точке и процедуру построения по точкам ломаной линии, представляющей собой график функции.
Решение. Организуем движение точки (Земли) по окружности, в центре которого размещается круг (Солнце). Установку точки на орбите можно осуществить по параметрическим формулам окружности:
X0 := 320 + r*sin(A);
Y0 := 240 + r*cos(A),
где r1 – радиус орбиты Земли, А- параметрический угол, меняющийся от 0 до 360 градусов. Чтобы организовать движение, достаточно в цикле устанавливать точку с координатами (x0, y0) для всех углов, принимающих значение от 0 до 360 градусов с шагом h.
Uses Crt, GRAPH;
Var i, d: integer;
fi, h, ; real;
x0, y0, r1: integer;
begin
d := detect;
InitGRAPH (d, i, 'G/Work/t7'); {Инициализация графики}
SetColor (Red);
Circle (320, 240, 10); {Рисование окружности красного цвета}
SetFillStyle (1, Red);
FloodFill (320, 240, Red); {Закраска круга (Солнца) красным цветом}
R1:= 100; h:=5; fi:= 0;
{Вращение точки по орбите. Процесс завершается нажатием любой клавиши}
Repeat
X0:= round (r1*sin (fi)) +320;
Y0:= round (r1*cos(fi)) +240;
fi:= fi+2*pi*h/360;
Putpixel (x0, y0, 15);
delay(50);
Putpixel ((x0, y0, 0);
Until keypressed;
CloseGraph
end.
Варианты заданий
Задание 1. Составить программу моделирования паркетов из:
a) прямоугольных треугольников;
e) равносторонних треугольников;
f) ромбов;
g) трапеций;
Задание 2. Разработайте программу для построения четырех различных графиков функций (y = x3 , y= ex, y = ln(x), y = sqrt (x)).
Задание 3.Разработайте динамическую модель Солнца для двух планет.