Смекни!
smekni.com

Разработка факультативного курса Программирование графики для старших классов (стр. 5 из 6)

MoveRel(dX,dY:integer) перемещает текущий указатель на dX точек по горизонта­ли и на dY точек по вертикали.

GetX, GetYвозвращают координаты текущего указателя.

Экран и окно в графическом режиме:

Создание окна SetViewPort(xl,yl,x2,y2:integer; Clip:boolean).

Очистка окна ClearViewPort.

Атрибуты текущего окна GetViewSettings(varVp : ViewPortType).

"Закраска" графического окна – SetFillStyle и SetFillPattern.

ВыводточкиPutPixel(X,Y:integer;Color:word).

Выводлинии: Line (XI,Y1,Х2,Y2:integer), LineTo(X,Y:integer), LineRel(dX,dY:integer).

3.Работа с текстом

Выводтекста OutTextXY(X,Y:integer; TextString:string).

Вывод численных значенийStr (),OutTextXY().

Шрифты SetTextStyle(Font:word; Direction:word; CharSize:word).

Выравниваниетекста SetTextJustify(Horiz,Vert:word);

4.Установка цвета и палитры

Получение информации о текущей палитре GetDefaultPalette(varPalette:PaletteType).

Установка цвета для процедур графического выводаSetColor(Color:word).

Установка нового цвета фонаSetBkColor(Color:word).

5. Построение графических фигур

Построение прямоугольников:

вычерчивание одномерного прямоугольника:Rectangle(Xl, Y1, Х2, Y2:integer),

вычерчиваниетрехмерногозакрашенногопрямоугольникаBar3D(xl, yl, x2, y2:integer; Depth: word; Top: boolean.

Построение многоугольниковDrawPoly(NumPointst : word; varPolyPoints)

Построение дуг и окружностей:

Окружность Circle (X, Y, Radius: word);

ДугаArc (X,Y: integer; StAngle, EndAngle, Radius: word);

ЭллиптическаядугаEllipse (X,Y:integer; StAngle,EndAngle:word; xR,yR:word);

ЗакрашенныйэллипсFillEllipse (X, Y:integer; xR, yR:word);

Сектор PieSlice (X,Y:integer;StAngle,EndAngle,Radius:word);

СекторвэллипсеSector(X, Y:integer; StAngle, EndAngle, xR, yR:word);

6. Работа с фрагментами изображения

Размер памяти, необходимой для сохранения образа фрагмента ImageSize (XI, Yl, X2, Y2: Integer):Word.

Сохранение образа фрагмента в памяти GetImage (XI, Yl, X2, Y2: Integer; varBitMap).

Выводит из буфера на экран двоичный образ заданной области экрана PutImage (X, Y:integer; varbitmap; Oper :word).

Требования к знаниям и умениям учащихся

Учащиеся должны знать:

· Инициализацию и закрытие графического режима;

· Базовые процедуры и функции модуля GRAPH: окно, текущий указатель, точка, линия;

· Работу с текстом;

· Установку цвета и палитры;

· Построение графических фигур;

· Работу с фрагментами изображения;

Учащиеся должны уметь:

  • выбрать и владеть конкретными графическими средствами для решения различных задач на ЭВМ с помощью языка программирования TurboPascal;
  • составить алгоритм для реализации задачи;
  • выводить текст в графическом режиме;
  • сохранять и выдавать изображения;
  • создавать движущиеся изображения;
  • строить график функции на экране дисплея;
  • строить изображения графиков и поверхностей функций;
  • решать одну и ту же задачу различными методами и средствами;

Тематическое планирование учебного материала

Учебно-тематическое планирование предполагает, что при распределении материала необходимо выделять часы на изучение теоретического материала; выполнение практических заданий; консультирование: непосредственное общение учащихся с педагогом или их сетевое взаимодействие; тематический контроль.

35 часов

Тема Кол-во часов
Тема 1: Графика в системе Турбо Паскаль. Экран и окно в графическом режиме
1. Характеристика графических режимов Управление графическими режимами 1
2. Подключение модуля Graph. Переменные, которые определяют графический драйвер и монитор. Задание команды для выбора значений переменных. Инициализация графического режима. Завершение работы в графической системе: CloseGraph. 1
3. Обработка ошибок 1
4. Практикум «Обработка ошибок» 1
Тема 2: Базовые процедуры и функции модуля GRAPH
5. Система координат. Перемещение текущего указателяСоздание окна. Очистка окна. Атрибуты текущего окна. "Закраска" графического окна.Вывод точки. Выводлинии 1
6. Практикум «процедуры и функции» 1
Тема 3: Работа с текстом
7. Вывод текста. Вывод численных значений. Шрифты. Выравнивание текста. 1
8. Практикум «Работа с текстом» 1
Тема 4: Установка цвета и палитры
9. Получение информации о текущей палитре. Установка цвета для процедур графического вывода.Установка нового цвета фона. 1
10. Практикум «Работа с цветом и палитрой» 1
Тема 5: Построение графических фигур
11. Построение прямоугольников: одномерный, трехмерный и закрашенныепрямоугольники.Построениемногоугольников. 1
12. Практикум «Построение прямоугольников» 1
13. Построение дуг и окружностей:Окружность Дуга Эллиптическая дуга Закрашенный эллипс Сектор Сектор в эллипсе 1
14. Практикум «Построение дуг и окружностей» 1
15. Практикум «Построение графических фигур» 1
16. Отчет по индивидуальным заданиям 1
Тема 6: Работа с фрагментами изображений
17. Размер памяти, необходимой для сохранения образа фрагмента. Сохранение образа фрагмента в памяти. Вывод из буфера на экран двоичный образ заданной области экрана. 1
18. Практикум « Работа с фрагментами изображений» 1
Тема 7: Создание движущихся изображений
19. Различные способы создания движущихся изображений. 1
20. Практикум «Создание движущихся изображений». 3
Тема 8: Построения графиков функций на экране дисплея
21. Алгоритмы построения графиков функций 1
22. Практикум «Построения графиков функций». 3
Тема 9: Разработка индивидуального проекта
23. Разработка проекта 1
24. Создание проекта 3
25. Защита проекта 1
Тема 10: Решение интересных задач
26. Фракталы алгебраические, геометрические 2
27. Фракталы схоластические 2

2.3Примеры интересных задач для факультативного курса «Программирование графики»

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

Построение салфетки Серпинского

Возьмем равносторонний треугольник и тремя его средними линиями разобьем на четыре равных треугольника. Внутренность среднего треугольника удалим, а с оставшимися тремя замкнутыми треугольниками повторим только что описанный процесс, то есть разделим каждый из них средними линиями на четыре равных треугольника и внутренности средних из них опять удалим. Очевидно, что после nшагов процесса мы будем иметь 3^n треугольников. Объединение их точек и будем называть салфеткой Серпинского n-ного ранга.

Построение салфетки Серпинского:

Program Sierp;

Uses Graph, Crt;

Type

TComplex = Record

X : Real;

Y : Real;

End;

Const

iter = 50;

max = 127;

Var
z : TComplex;

x, y, n : Integer;

gd, gm : Integer;

mx, my : Integer;

Begin

gd := Detect;

InitGraph(gd,gm,'');

Mx := GetMaxX div 2;

My := GetMaxY div 2;

For y := -my to my do

For x := -mx to mx do Begin

n := 0;

z.x := X * 0.005;

z.y := Y * 0.005;

While (sqr(z.x) + sqr(z.y) < max) and (n < iter) do Begin

If z.y>0.5 Then Begin

z.x:=2*z.x;

z.y:=2*z.y-1;

End Else

If z.x>0.5 Then Begin

z.x:=2*z.x-1;

z.y:=2*z.y;

End Else

Begin

z.x:=2*z.x;

z.y:=2*z.y;

End;

Inc(n);

End;

PutPixel(mx + x,my + y,16 - (n mod 16));

If KeyPressed Then Break;

End;

Readkey;

CloseGraph;

End.

Построение кривой Коха

Начинаем с отрезка-основы: удаляем его среднюю третью часть и заменяем се сторонами равностороннего треугольника.

Если основаимеет длину 1, то фрагмент будет состоять из четырех отрезков, каждый длины 1/3 и. следовательно, обшей длины 4/3. На следующем шаге получаем ломаную, состоящую из 16 отрезков и имеющую общую длину 16/9 и т.д.

Кривая Коха имеет бесконечную длину. Кроме того, кривая Коха состоит из четырёх равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/3. Кривая Коха самоподобна: каждая часть является миниатюрной копией целого. Для построения кривой Коха фиксируем степень приближения p. Это означает, что мы будем применять «p» преобразований к «основе». Если основа это отрезок, то результатом будет ломаная линия, состоящая из

отрезков равной длины
. Будем нумеровать отрезки от 0 до
включительно. Для каждого шага (соответствующему индексу n)должен нарисоваться отрезок, точнее говоря, вектор

Построение кривой Коха:

programKox;

uses CRT, Graph;

const

p=5;

var gd, gm: Integer;

i, j: Integer;

x, y, l: Real;

a: Real;

n, m, k: Integer;

begin

gd:=Detect;

InitGraph(gd, gm, 'c:&bsol;bp&bsol;bgi');

x:=0;

y:=400;

l:=640/(exp(p*ln(3)));

MoveTo(Round(x), Round(y));

for i:=0 to Round(exp(p*ln(4)))-1 do begin

a:=0;

n:=i;

k:=0;

repeat

m:=n mod 4;

n:=n div 4;

case m of

0: a:=a+0;

1: a:=a-pi/3;

2: a:=a+pi/3;

3: a:=a+0;

end;

inc(k);

until k>=p;

x:=x + l*cos(a);

y:=y + l*sin(a);

LineTo(Round(x), Round(y));

end;

ReadKey;

CloseGraph;

end.

Построение фрактала крест

Образуем случайную последовательность из точек

,
,
,… Каждая точка получается из предыдущей с помощью применения к предыдущей преобразования Lили R, где