Знакомство с графическим модулем Автор Шичева О.Б. учитель информатики МОУ СОШ 30.

Презентация:



Advertisements
Похожие презентации
Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Advertisements

Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Операторы графики. Содержание Открытие и закрытие графического режимаОткрытие и закрытие графического режима Графические операторы Обобщение (основные.
Построение точки и отрезков прямых. Для построения точки служит процедура PutPixel(X,Y, цвет) Для построения точки служит процедура PutPixel(X,Y, цвет)
1 Графика в Pascal Модуль Graph. 2 Подключение дополнительных библиотек Для работы в графическом режиме необходимо подключение модуля Graph. Первой инструкцией.
Графика в Паскале Учитель информатики и ИКТ СОШ 60 Грязнова А. В.
Графика в Turbo Pascal ГБОУ СПО «КСТ», г. Калуга преподаватель Шамрина Ольга Николаевна.
Задание графического режима Линия Прямоугольник Окружность Эллипс Дуга выход Тест 2Тест 1 содержание.
Графические операторы в QBasic. Графический режим экрана SCREEN N 1. SCREEN N - этот оператор очищает экран и задает графический режим, где N определяет.
ГРАФИКА program имя; USES GRAPH; {подключение модуля} var GR,GM:integer; begin GR:=detect; initgraph(gr,gm,' '); {вызов процедуры GRAPH} графические операторы.
Построение фигур Дуга, окружность, прямоугольник, эллипс.
Учебная система программирования вводный курс. УРОК 5. Графика и графические операторы в языке Паскаль Паскаль имеет развитую систему работу с графикой,
Машинная графика Операторы построения точки, отрезка, прямоугольника, закрашенного прямоугольника.
Экран в графическом режиме представляет собой прямоугольник, заполненный точками – пикселями. X Y y x (0,0) Для построения изображения используется система.
Графический режим Инициализация графического режима. Построение точки, линии.
Учебная система программирования вводный курс. УРОК 6. Построение графиков функций на языке Паскаль Построение графиков в паскаль АВС осуществляется в.
Процедуры рисования закрашенных фигур Графические окна (для умников)
Электронный справочник по процедурам и функциям модуля Graph языка программирования Turbo Pascal автор: Алиева Ирина Викторовна Учитель информатики и ИКТ.
Константы цвета Black = 0; {Черный} Blue = 1; {Синий} Green = 2; {Зеленый} Cyan = 3; {Голубой} Red = 4; {Красный} Magenta = 5; {Фиолетовый} Brown = 6;
Транксрипт:

Знакомство с графическим модулем Автор Шичева О.Б. учитель информатики МОУ СОШ 30

Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный параллелепипед. Uses Graph – подключение графического модуля. Close Graph – останавливает работу графической системы. Экран: Координаты левого верхнего угла экрана – 0,0. Х увеличивается слева направо от 0 до 639. Записать Y увеличивается сверху вниз от 0 до 479. Инициализация графической системы и перевод аппаратуры в графический режим. Процедура InitGraph(var граф_драйвер: integer;var граф_режим: integer; путь_драйвер:string).

Процедура SetColor(цвет:word) Устанавливает текущий цвет рисунка. Word – целый тип. Диапазон значений 0… Размер в памяти – 2 байта 0 черный 1 синий 2 зеленый 3 бирюзовый 4 красный 5 малиновый 6 коричневый 7 светло-серый 8 темно-серый 9 светло-голубой 10 светло-зеленый 11 светло- бирюзовый 12 светло-красный 13 светло- малиновый 14 желтый 15 белый

Процедура SetFillStyle(образец:word;цвет:word)Устанавливает тип закраски и ее цвет. 0 заполнение фоновым цветом 1 непрерывное заполнение 2 заполнить заполнить /// 4 заполнить жирными /// 5 заполнить жирными \\\ 6 заполнить \\\ 7 заполнить редкой штриховкой 8 частой пересекающейся штриховкой частой пересекающейся штриховкой 9 заполнить прерывистыми линиями 10 заполнить редкими точками 11 заполнить частыми точками

Процедура Bar(x1,y1,x2,y2:integer) Рисует столбец, используя стандартный тип и цвет закраски, заданные с помощью процедуры SetFillStyle. Процедура Bar3d(x1,y1,x2,y2:integer;глубина:word;вершина:boolean) Используя текущий тип и цвет закраски, рисует трехмерный параллелепипед. Вершина может быть истина – TRUE, тогда рисуется верхняя грань и ложь – FALSE, тогда верхняя грань не рисуется. Пример: Трехмерный параллелепипед. Program gr; Uses crt,graph; Var gd,gm:integer; Begin gd:=detect; InitGraph(gd,gm,c:\tp\); Результат SetFillStyle(8,5); SetColor(5); Bar3d(100,100,300,250,60,true); Repeat until keypressed; CloseGraph; End.

0 непрерывная линия 1 линия из точек 2 линия из точек и тире 3 пунктирная линия 4 тип, определяемый пользователем 1 нормальная толщина 3 жирная линия Урок 2 Линии, окружности, прямоугольники, точки, заливка Процедура SetLineStyle(тип_линии:word;образец:word;толщина:word) Устанавливает текущую толщину и тип линии; параметр образец используется для типа, определяемого пользователем, для остальных типов этот параметр=0. Тип линии Толщина линии

Процедура Line(x1,y1,x2,y2:integer) Рисует прямую линию из точки (x1,y1) в точку (x2,y2), толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Процедура Circle(x,y:integer;радиус:word) Рисует окружность с заданным радиусом и центром, используя текущий цвет Процедура Ellipse(x,y:integer;нач_угол,кон_угол:word;радX,радY:word) Рисует эллиптическую дугу от начального до конечного угла, используя x,y в качестве центра, радX и радY – горизонтальная и вертикальная оси Процедура Rectangle(x1,y1,x2,y2:integer) Рисует прямоугольник, используя текущий цвет и тип строки. (x1,y1) – верхний левый угол прямоугольника, (x2,y2) – нижний правый. (0<=x1<x2<=GetMaxX и 0<=y1<y2<=GetMaxY) Функция GetMaxX и Функция GetMaxY возвращают для текущего графического режима и драйвера максимальное значение x (639)и y (479). Процедура PutPixel(x,y:integer;цвет:word) Строит точку в (x,y) цветом, заданным параметром цвет. Процедура FloodFill(x,y,граница:word) Заполняет ограниченную область, используя текущий заполнитель.

Закрашенные концентрические окружности program krugi; uses crt,graph; var gd,gm:integer; x0,r,y0:integer;c:word; x0,r,y0:integer;c:word;begin gd:=detect; gd:=detect; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); c:=1; c:=1; x0:=320;y0:=240;r:=100; x0:=320;y0:=240;r:=100; while r>0 do begin while r>0 do begin SetColor(c); SetColor(c); SetFillStyle(1,c); SetFillStyle(1,c); Circle(x0,y0,r); Circle(x0,y0,r); Результат Результат FloodFill(x0,y0,c); FloodFill(x0,y0,c); r:=r-5;if c<15 then c:=c+1 else c:=1 r:=r-5;if c<15 then c:=c+1 else c:=1 end; end; repeat until keypressed; closegraph repeat until keypressed; closegraphend. Типы линий program type_line; uses crt,graph; var gd,gm:integer; x1,y,x2,c,t:integer; x1,y,x2,c,t:integer;begin gd:=detect; gd:=detect; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); x1:=0;x2:=GetmaxX;y:=0;t:=0; x1:=0;x2:=GetmaxX;y:=0;t:=0; while y<GetmaxY do begin while y<GetmaxY do begin SetColor(15);SetLineStyle(t,0,1) ; SetColor(15);SetLineStyle(t,0,1) ; line(x1,y,x2,y); line(x1,y,x2,y); x1:=x1+10;x2:=x2-10;y:=y+15; x1:=x1+10;x2:=x2-10;y:=y+15; if t<3 then t:=t+1 else t:=1; if t<3 then t:=t+1 else t:=1; end; end; repeat until keypressed; repeat until keypressed; closegraph closegraphend. Примеры программ

Эллипсы program ellipsy; uses crt,graph; var d,min,x,x0,y,y0,gd,gm:integer; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); setcolor(10); min:=5;x0:=320;y0:=240;y:=200; x:=min;d:=5; while y>=min do begin ellipse(x0,y0,0,359,x,y); x:=x+d;y:=y-d end; repeat until keypressed; closegraph end. Результат

Урок 3 Использование случайных чисел Процедура Randomize – инициализирует генератор случайных чисел; Функция Random(n) – возвращает случайное целое число в диапазоне от 0 до n; Звездное небо program zwezda; uses crt,graph; var gd,gm:integer; i,x,y,c:integer; i,x,y,c:integer;begin gd:=detect; gd:=detect; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); randomize; randomize; for i:=1 to 1000 do begin for i:=1 to 1000 do begin x:=random(639); x:=random(639); y:=random(479); y:=random(479); c:=random(15); c:=random(15); PutPixel(x,y,c); PutPixel(x,y,c); end; end; repeat until keypressed; repeat until keypressed; closegraph end. closegraph end. Случайные точки в центре экрана program krug; uses crt,graph; var gd,gm,i,r,c,x,y:integer; xc,yc:real; xc,yc:real;begin gd:=detect;r:=50; gd:=detect;r:=50; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); randomize; randomize; repeat repeat x:=random(639);y:=random(479); x:=random(639);y:=random(479); c:=random(15); c:=random(15); xc:=x-320;yc:=y-240; xc:=x-320;yc:=y-240; if xc*xc+yc*yc<=r*r if xc*xc+yc*yc<=r*r then PutPixel(x,y,c); then PutPixel(x,y,c); until keypressed; until keypressed; closegraph end. Результат closegraph end. Результат

Урок 4 Рисование линий Текущий указатель в графическом режиме аналогичен курсору, который используется в текстовом режиме. Различает их то, что текущий указатель не виден. Процедура LineRel(dx,dy:integer) Проводит прямую линию в точку, заданную относительным расстоянием (dx,dy) от текущего указателя; Процедура LineTo(x,y:integer) Рисует прямую линию из точки, в которой находится указатель в точку (x,y); Процедура MoveRel(dx,dy:integer) Перемещает текущий указатель на расстояние, заданное относительными координатами от его текущей позиции; Процедура MoveTo(x,y:integer) Перемещает текущий графический указатель в точку (x,y).

Примеры программ Развернутые конверты program konwert; uses crt,graph; var gd,gm:integer; x0,y0,r:integer; x0,y0,r:integer;begin gd:=detect; gd:=detect; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); x0:=100;y0:=400;r:=100; x0:=100;y0:=400;r:=100; MoveTo(x0,y0); MoveTo(x0,y0); LineTo(x0,y0-r);LineTo(x0+r,y0-r); LineTo(x0,y0-r);LineTo(x0+r,y0-r); LineTo(x0+r,y0);LineTo(x0,y0); LineTo(x0+r,y0);LineTo(x0,y0); LineTo(x0+r,y0-r);LineTo(x0+r div 2,y0-r*2); LineTo(x0+r,y0-r);LineTo(x0+r div 2,y0-r*2); LineTo(x0,y0-r);LineTo(x0+r,y0); LineTo(x0,y0-r);LineTo(x0+r,y0); MoveRel(r,0); MoveRel(r,0); LineRel(0,-r);LineRel(r,0); LineRel(0,-r);LineRel(r,0); LineRel(0,r);LineRel(-r,0); LineRel(0,r);LineRel(-r,0); LineRel(r,-r);LineRel(-r div 2,-r); LineRel(r,-r);LineRel(-r div 2,-r); LineRel(-r div 2,r);LineRel(r,r); LineRel(-r div 2,r);LineRel(r,r); repeat until keypressed; repeat until keypressed; closegraph end. closegraph end. Ступени program stupeni; program stupeni; uses crt,graph; uses crt,graph; var gd,gm:integer; var gd,gm:integer; x0,y0,r,i:integer; x0,y0,r,i:integer; begin begin gd:=detect; gd:=detect; initgraph(gd,gm,'c:\tp\'); initgraph(gd,gm,'c:\tp\'); x0:=10;y0:=400;r:=20; x0:=10;y0:=400;r:=20; MoveTo(x0,y0); MoveTo(x0,y0); for i:=1 to 10 do begin for i:=1 to 10 do begin LineRel(0,-r);LineRel(r,0) LineRel(0,-r);LineRel(r,0) end; end; for i:=1 to 10 do begin for i:=1 to 10 do begin LineRel(0,r);LineRel(r,0) LineRel(0,r);LineRel(r,0) end; end; repeat until keypressed; repeat until keypressed; closegraph closegraph end. end.

Урок 5 Движение объекта Примеры программ: Движущийся квадрат program dw; uses crt,graph; var x1,x2,y1,y2,gd,gm:integer; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); x1:=0;y1:=0;x2:=20;y2:=17; repeat setcolor(10); Rectangle(x1,y1,x2,y2);delay(10000); setcolor(0); Rectangle(x1,y1,x2,y2); x1:=x1+10;x2:=x2+10;y1:=y1+7;y2:=y2+7 until (x2>=GetMaxX) or (y2>=GetMaxY); setcolor(10); Rectangle(x1,y1,x2,y2); repeat until keypressed; closegraph end.

Движение человечка program ch; uses crt,graph; var gd,gm:integer; x0,x,r,y0,y:integer; procedure chelovek(xp,yp:integer); begin Circle(xp,yp,r); Line(xp,yp+r,xp,yp+2*r); Line(xp,yp+2*r,xp+r,yp+3*r); Line(xp,yp+2*r,xp-r,yp+3*r); Line(xp,yp+2*r,xp,yp+3*r); Line(xp,yp+3*r,xp+r,yp+5*r); Line(xp,yp+3*r,xp-r,yp+5*r); end; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); x0:=20;y0:=240;r:=20; x:=x0;y:=y0; while x<600 do begin SetColor(14);chelovek(x,y); Delay(7000); SetColor(0);chelovek(x,y); x:=x+20; end; SetColor(14);chelovek(x,y); repeat until keypressed; closegraph end.

Движение с изменением цвета и типа закраски program diagonali; uses crt,graph; var i,j,x1,x2,y1,y2,gd,gm:integer; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); rectangle(0,0,639,479); repeat x1:=1;y1:=1;x2:=100;y2:=50; j:=1;i:=0;{движение вниз и вправо} while x2<620 do begin SetFillStyle(j,i); bar(x1,y1,x2,y2); {delay(15000);Setfillstyle(1,0);bar(x1,y1,x2,y2);} x1:=x1+10;y1:=y1+8;x2:=x2+10;y2:=y2+8; if j<11 then j:=j+1 else j:=1; if i<15 then i:=i+1 else i:=1; end; x1:=1;y1:=478;x2:=100;y2:=429; j:=1; i:=0;{движение вверх и вправо} while x2<620 do begin SetFillStyle(j,i); bar(x1,y1,x2,y2);{delay(10000);Setfillstyle(1,0);bar(x1,y1,x2,y2);} x1:=x1+10;y1:=y1-8;x2:=x2+10;y2:=y2-8; if j<11 then j:=j+1 else j:=1; if i<15 then i:=i+1 else i:=1; end; until keypressed; closegraph; end.

Урок 6 Графики функций Началом координат будем считать точку с координатами (320, 240). Тогда оси координат: line(0,240,639,240) – ось X; line(320,0,320,479) – ось Y; Построим график функции Y=X. Пусть X изменяется от Начальное значение X=-200. В цикле будем увеличивать значение аргумента на шаг (например на 5), вычислять значение функции и ставить точку с координатами X, Y с помощью процедуры PutPixel. В параметрах процедуры перед значением Y будем ставить знак минус, так как 0 по оси Y вверху. Все значения Y будем увеличивать на 240, а X – на 320, чтобы «передвинуть» график в нашу систему координат. Для растягивания графика по осям координат (иначе его не будет видно) умножаем значения Х и Y на коэффициент 10, то есть меняем масштаб графика.

Примеры программ: График функции Y=X program grafiki; uses crt,graph; var gd,gm:integer; i,x0,y0:integer;x,y:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); SetColor(7); rectangle(0,0,639,479); x0:=320;y0:=240; line(320,0,320,479);line(0,y0,639,y0); x:=-20; for i:=1 to 80 do begin x:=x+0.5;y:=x;PutPixel(round(x*10+x0),round(-y*10+y0),7) end; repeat until keypressed; closegraph; end. Для графиков тригонометрических функции нужно задавать другие коэффициенты по осям координат, так в следующем примере эти коэффициенты 20 и 50. Аргумент тригонометрической функции – угол в радианах

Графики тригонометрических функций: sinX, cosX, tgX program grafiki; uses crt,graph; var gd,gm:integer; i,n,x0,x,y0,y,y1,y2:integer; ug:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); SetColor(7); rectangle(0,0,639,479); x0:=0;y0:=240;ug:=0.1; line(0,0,0,479);line(0,240,639,240); for i:=1 to 1000 do begin Результат x:=round(ug*20+x0); y:=round(-sin(ug)*50+y0); y1:=round(-cos(ug)*50+y0); y2:=round((-sin(ug)/cos(ug)+y0)); PutPixel(x,y,4);PutPixel(x,y1,2); PutPixel(x,y2,14); ug:=ug+pi/100 end; repeat until keypressed; closegraph; end.

Линия, соединяющая графики синуса и косинуса program grafiki; uses crt,graph; var gd,gm:integer; i,n,x0,x,y0,y,y1,c:integer; ug:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); SetColor(7); rectangle(0,0,639,479); repeat x0:=10;y0:=240;ug:=0;c:=1; for i:=1 to 100 do begin x:=round(ug*30+x0); Результат y:=round(-sin(ug)*100+y0); y1:=round(-cos(ug)*150+y0); setcolor(c);SetLineStyle(0,0,3); line(x,y,x+10,y1);delay(5000); {setcolor(0); line(x,y,x+10,y1);} {убрать фигурные скобки для изменения картинки} ug:=ug+pi/18;if c<15 then c:=c+1 else c:=1 end; until keypressed; closegraph;end.

Графики функции sinX*sinX/10 с разными амплитудами program grafiki; uses crt,graph; var gd,gm:integer; i,n,x0,x,y0,y,y1,y2:integer; ug:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); Результат SetColor(7);rectangle(0,0,639,479); x0:=0;y0:=240;ug:=0.1; line(0,0,0,479);line(0,240,639,240); for i:=1 to 1500 do begin x:=round(ug*10+ug/9+x0); y:=round(-sin(ug)*sin(ug/10)*50+y0); y1:=round(-sin(ug)*sin(ug/10)*60+y0); y2:=round(-sin(ug)*sin(ug/10)*70+y0); PutPixel(x,y,4);PutPixel(x,y1,2);PutPixel(x,y2,14); ug:=ug+pi/60 end; repeat until keypressed; closegraph; end.

Примеры графиков program grafiki; uses crt,graph; var gd,gm:integer; i,n,x0,x,y0,y,y1,y2:integer; ug:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); SetColor(7); rectangle(0,0,639,479); x0:=0;y0:=60;ug:=0.1; line(0,0,0,479);line(0,y0,639,y0); for i:=1 to 1000 do begin x:=round(ug*20+x0); y:=round(-sin(5*ug)*(ug/4)*5+y0); PutPixel(x,y,4); ug:=ug+pi/100 end; y0:=120;ug:=0.1;line(0,y0,639,y0); for i:=1 to 1000 do begin x:=round(ug*20+x0); y:=round(-sin(5*ug)*30+y0); PutPixel(x,y,7); ug:=ug+pi/100 end;

y0:=180;ug:=0.1;line(0,y0,639,y0); for i:=1 to 1000 do begin x:=round(ug*20+x0); y:=round(-ug*sin(5*ug)+y0); PutPixel(x,y,3); ug:=ug+pi/100 end; y0:=240;ug:=0.1;line(0,y0,639,y0); for i:=1 to 5000 do begin x:=round(ug*20+x0); y:=round(-30*sin(ug)* cos(15*ug)+y0); PutPixel(x,y,14); ug:=ug+pi/500 end; y0:=320;ug:=0.1;line(0,y0,639,y0); Результат for i:=1 to 2000 do begin x:=round(ug*50+x0); y:=round(-40*sin(ug)*cos(25*ug)+y0); PutPixel(x,y,12); ug:=ug+pi/500 end; y0:=420;ug:=0.1;line(0,y0,639,y0); for i:=1 to 2000 do begin x:=round(ug*30+x0); y:=round(-50*sin(ug)*cos(5*ug)+y0); PutPixel(x,y,2); ug:=ug+pi/200 end; repeat until keypressed;closegraph end.

Урок 7 Параметрическое задание кривых Параметрическое задание окружности с центром в начале координат Координаты любой точки с координатами X,Y, принадлежащей окружности, можно определить по следующим формулам: 0,0 X,Y α r Параметрическое задание окружности с центром в любой точке с координатами X 0,Y 0 0,0 X,Y α r X 0,Y 0 Значит

Примеры программ: Окружность, в виде отрезков program krug; uses crt,graph; var gd,gm:integer; x,y,f:real; i,x0,y0,r,c:integer; begin gd:=detect; write('введите радиус окружности и цвет (1-15)');read(r,c); initgraph(gd,gm,'c:\tp\'); x0:=320;y0:=240;f:=0;MoveTo(x0+r,y0); SetColor(c); for i:=1 to 100 do begin f:=f+2*pi/100; x:=x0+r*cos(f);y:=y0+r*sin(f); LineTo(round(x),round(y)); end; repeat until keypressed; closegraph end.

Убегающий многоугольник program ubeg_mn; uses crt,graph; var i,x0,y0,r,gd,gm,n,c:integer; f,x,y:real; begin write('введите число сторон многоугольника_');read(n); gd:=detect; initgraph(gd,gm,'c:\tp\'); c:=1; x0:=320;y0:=240;r:=150;f:=0; while r>0 do begin setcolor(c); x:=x0+r*cos(f);y:=y0+r*sin(f); moveto(round(x),round(y)); for i:=1 to n do begin f:=f+2*pi/n; x:=x0+r*cos(f);y:=y0+r*sin(f); Результат lineto(round(x),round(y));delay(40000); end; f:=f+3;r:=r-3;if c<14 then c:=c+1 else c:=1; end; repeat until keypressed; closegraph end.

Салфетка program salfetka; uses crt,graph; var gd,gm:integer; f:real; i,j,x0,y0,n,c,r:integer; vr:array[1..100,1..2]of integer; begin gd:=detect; write('введите число вершин и цвет (1-15)'); read(n,c); initgraph(gd,gm,'c:\tp\'); x0:=320;y0:=240;f:=0;r:=130; SetColor(c); Результат for i:=1 to n do begin {заполнение массива вершин} vr[i,1]:=round(r*cos(f)+x0); vr[i,2]:=round(r*sin(f)+y0); f:=f+2*pi/n; end; for i:=1 to n-1 do for j:=i+1 to n do Line(vr[i,1],vr[i,2],vr[j,1],vr[j,2]); repeat until keypressed; closegraph end.

Примеры параметрического задания кривых program krug; uses crt,graph; var gd,gm:integer; x,y,f,r,a,m,rb,h:real; i,x0,y0,c:integer; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); { 1 спираль Архимеда } r:=50;x0:=30;y0:=100;f:=0;MoveTo(round(x0+r),y0); SetColor(2); for i:=0 to 100 do begin f:=f+2*pi/100; x:=x0+r*cos(f);y:=y0+r*sin(f); delay(10000); LineTo(round(x),round(y)); r:=r-0.5 end; { 2 Трилистник 5,7,9,11-листники, 4,8,.. -листники} x0:=100;a:=50;y0:=100;f:=0;MoveTo(round(x0+a),y0); SetColor(14); for i:=1 to 50 do begin f:=f+2*pi/100;r:=a*cos(3*f);{заменить на 5,7,9,11,затем на 2,4,8,10} x:=x0+r*cos(f);y:=y0+r*sin(f);delay(10000);

LineTo(round(x),round(y)); end; x0:=100;a:=60;r:=50; { 3 улитка Паскаля} x0:=160;a:=50;y0:=100;f:=0;MoveTo(round(x0+a+a/2),y0); SetColor(4); for i:=1 to 100 do begin f:=f+2*pi/100;r:=a/2+a*cos(f); x:=x0+r*cos(f);y:=y0+r*sin(f); delay(10000); LineTo(round(x),round(y)); end; x0:=100;a:=60;r:=50; { 4 кардиоида} x0:=250;a:=30;y0:=100;f:=0;MoveTo(round(x0+a*2),y0); SetColor(5); for i:=1 to 100 do begin f:=f+2*pi/100;r:=a*(1+cos(f)); x:=x0+r*cos(f);y:=y0+r*sin(f); delay(10000); LineTo(round(x),round(y)); end; x0:=100;a:=60;r:=50;

{ 5 коклехоида} x0:=360;a:=200;y0:=60;f:=1; MoveTo(round(x0+a*sin(1)*cos(1)),round(y0+a*sin(1)*sin(1))); SetColor(9); for i:=1 to 180 do begin f:=f+2*pi/100;r:=a*sin(f)/f; x:=x0+r*cos(f);y:=y0+r*sin(f); delay(10000); LineTo(round(x),round(y)); end; { 6 кривая Штейнера} x0:=505;r:=45;y0:=150;f:=1; MoveTo(round(x0+r*2+r),round(y0)); SetColor(11); for i:=0 to 300 do begin f:=f+2*pi/100; x:=x0+r*2*cos(f/3)+r*cos(2*f/3); y:=y0+r*2*sin(f/3)-r*sin(2*f/3); delay(10000); LineTo(round(x),round(y)); end;

{7 циклоида} x0:=10;r:=10;y0:=450;f:=1; MoveTo(round(x0),round(y0)); SetColor(10); for i:=1 to 1000 do begin f:=f+2*pi/100; x:=x0+r*f-r*sin(f);y:=y0+r-r*cos(f); delay(1000); LineTo(round(x),round(y)); end; {8 эпитрохоида} x0:=250;r:=35;y0:=300;f:=0;rb:=45;m:=r/rb;h:=80; MoveTo(round(x0+(r+m*r)*cos(m+f)-h*cos(f+m*f)), round(y0+(r+m*r)*sin(m+f)-h*sin(f+m*f))); SetColor(13); for i:=0 to 900 do begin f:=f+2*pi/100; x:=x0+(r+m*r)*cos(m+f)-h*cos(f+m*f); y:=y0+(r+m*r)*sin(m+f)-h*sin(f+m*f);delay(10000); LineTo(round(x),round(y)); end; repeat until keypressed; closegraph end.

Примеры параметрического задания кривых Результат

Букет program buket; uses crt,graph; var gd,gm:integer; i,j,k,x,y,c,r:integer; f:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); randomize; repeat x:=random(609);y:=random(449); c:=random(15);r:=random(30); SetColor(c); line(320,470,x,y);delay(10000); Результат f:=0;k:=1; repeat for j:=1 to 30 do begin line(x,y,x+round(k*cos(f)),y+round(k*sin(f))); f:=f+2*pi/30; end; k:=k+1;delay(1000); until k>=r until keypressed; closegraph end.

Салют program buket; uses crt,graph; var gd,gm:integer; i,j,k,x,y,c,r:integer; f,n,s,rb,rt:real; begin gd:=detect; initgraph(gd,gm,'c:\tp\'); randomize; repeat x:=random(600); y:=random(400); c:=random(15); r:=random(60); SetColor(c); f:=0;k:=1; repeat for j:=1 to 30 do begin Результат line(x,y,x+round(k*cos(f)),y+round(k*sin(f))); f:=f+2*pi/30; end; k:=k+1;delay(1000); until k>=r until keypressed; closegraph end.

Зачет по теме: Графика в Паскале Составить программу, рисующую: 1)движущуюся по экрану точку 2)движущуюся стрелку часов 3)линии, соединяющие две концентрические окружности 4)вращающийся радиус окружности в случайной точке, случайным размером 5)вращающийся радиус окружности, увеличивающийся в размере от 1 до 250 6)закрашенный круг в центре экрана и вращающийся вокруг него маленький закрашенный круг 7)вращающийся радиус окружности, уменьшающийся в размере от 300 до 0 8)линии, соединяющие точки двух окружностей разного диаметра. Дополнительно: углы меняются в противоположные стороны. 9)линии соединяющие спираль Архимеда, заданного радиуса с заданной точкой 10)линии, соединяющие основание конуса с его вершиной. Все размеры ввести.

Задание 5 Результат Задание 3 Результат Процедуры и функции графического модуля