1. Возможности использования математических зависимостей для построения фигур.
2. Создание программы с использованием собственной формы математической зависимости.
3. Практическая работа «Построение фигуры на основе математической зависимости»
Текущая позиция. Абсолютные координаты.Кроме понятий "текущий цвет рисования" и "текущий цвет фона" существует понятие "текущая позиция". Текущая позиция - это координаты на экране воображаемого "указателя координат". Как правило изменение положения "текущей позиции" происходит "незаметно", при использовании графических процедур и функций.Кроме процедур и функций для управления графическим режимом вы изучили несколько процедур и функций, в которых текущая позиция изменяется при указании абсолютных (непосредственных) координат экрана. Уточним координаты "текущей позиции" после их использования: ClearDevice (0,0). Line(x1,y1,x2,y2:integer) текущая позиция не изменяется PutPicsel(x,y:integer; Pixel:Word) текущая позиция не изменяется Rectangle(x1,y1,x2,y2:integer) текущая позиция не изменяется Circle(x,y,r:integer) (x,y). Arc(x,y:integer; StA,EndA,Radius:word); (x,y). Ellipse(x,y:integer; stA,endA:word; xr,yr: word); (x,y).Перемещение указателя координат. Относительные координаты.Кроме процедур, которые перемещают текущий указатель, выполняя конкретное действие (создавая изображение линии или фигуры), существуют специальные процедуры для изменения положения текущего указателя координат.MoveTo(x,y:integer); Перемещает текущий указатель координат в точку окна с координатами (x,y). Точка на экране не высвечивается.MoveRel(Dx,Dy:integer);Перемещает указатель координат "позицию" на заданное расстояние (Dx, Dy) по отношению к его предыдущему положению (точка на экране невысвечивается).Процедуры MoveTo и MoveRel выполняют одно и то же действие - перемещение текущего указателя координат. Но аргументами MoveTo - являются абсолютные координаты экрана, а аргументами MoveRel - так-называемые относительные координаты. Смещение по отношению к предыдущему положению называют относительными координатами, или координатами по отношению к предыдущему положению.В качестве примера приведём аналоги процедур MoveTo и MoveRelLineTo(x,y:integer);Проводит линию текущего цвета из текущей позиции в точку с координатами (x,y). Текущая позиция "указатель" устанавливается в точке(x,y).LineRel(Dx,Dy:integer);Проводит линию текущего цвета из текущей позиции в точку, сдвинутую относительно исходной позиции на величины (Dx,Dy). Текущая позиция"указатель" перемещается относительно предыдущего на величину (Dx,Dy).Определение координат текущей позицииGetX: integer; Возвращает координату X текущей позиции на экране.GetY: integer; Возвращает координату Y текущей позиции на экране.Рисование заполненных фигур.Все изученные вами процедуры рисуют с помощью линий. Параметры линий рисования, как вам известно, задаются с помощью процедуры SetLineStyle. В этом разделе описаны процедуры для рисования "заполненных" фигур. Параметры рисования заполненных фигур задаются процедурой SetFillStyle. С её помощью устанавливаются текущий орнамент рисования и текущий цвет рисования.SetFillStyle(p:word; c:word);Задаёт стандартный орнамент и цвет заполнения фигур.p - номер стандартного орнамента; c - цвет заполнения фигур (номер цвета в палитре).Константы орнамента заполнения
0
EmptyFill
Заполнение цветом фона
1
SolidFill
Однородное заполнение цветом заполнения
2
LineFill
Заполнение -----------------
3
LtSlachFill
Заполнение ///
4
SlachFill
Заполнение /// толстыми линиями
5
BkSlachFill
Заполнение \\\ толстыми линиями
6
LtBkSlachFill
Заполнение \\\
7
HathFill
Заполнение клеткой
8
XHathFill
Заполнение косой клеткой
9
InterleaveFill
Заполнение частой клеткой
10
WideDotFill
Заполнение редкими точками
11
CloseDotFill
Заполнение частыми клетками
Контур заполненных фигур.Обратите внимание! Цвет заполнения фигур, ничего общего с цветом рисования линий, который устанавливается процедурой SetColor не имеет. Цветом, установленным процедурой SetColor рисуются контура этих фигур. Стиль линии контура (толщина и прерывистость) устанавливается процедурой SetLineStyle (Смотри лаб. N 11)Bar(x1,y1,x2,y2:integer) Строит прямоугольник, закрашенный текущим орнаментом и цветом заполнения.x1,y1,x2,y2 - координаты левого верхнего и правого нижнего углов прямоугольника. Координаты текущей позиции не изменяются.Bar3D(x1,y1,x2,y2:integer; Depth:Word; Top:Boolean); Строит параллелепипед, закрашенный текущим орнаментом и цветом заполнения.Depth - ширина боковой грани (отсчитывается по горизонтали);Top - признак включения верхней грани (если true - верхняя грань вычерчивается, если false - верхняя грань не отображается).Координаты текущей позиции совпадают с координатами правого, дальнего, верхнего угла параллелепипеда. При Depth=0, координаты текущей позиции совпадают с координатами левого верхнего угла.FillEllipse(x,y:integer; xr,yr: word);Строит эллипс, закрашенный текущим орнаментом и цветом заполнения.x,y - координаты центра эллипса;xr,yr - горизонтальная и вертикальная полуоси эллипса. Координаты текущей позиции (x,y).FloodFill(x,y:integer; Border:Word);Закрашивает область, ограниченную непрерывной линией, текущим аpнаментом и цветом заполнения. x,y - координаты любой точки, внутри закрашиваемой области;Border - цвет линии, до которой производится закрашивание.PieSlice(x,y:integer; stA,endA,r:word);Строит сектор круга, закрашенный текущим орнаментом и цветом заполнения.x,y - координаты центра сектора круга;stA - начальный угол; (в градусах)endA - конечный угол; (в градусах)r - радиус сектора.Координаты текущей позиции (x,y).Sector(x,y:integer; stA,endA,xr,yr:integer);Строит сектор эллипса, закрашенный текущим орнаментом и цветом заполнения.x,y - координаты центра эллипса;stA - начальный угол; (в градусах)endA - конечный угол; (в градусах)xr,yr - горизонтальная и вертикальная полуоси эллипса.Координаты текущей позиции (x,y). Задания для самостоятельного выполнения.1. Нарисуйте картинку "пейзаж" на любую тему.2. Нарисуйте разноцветную мишень.3. Нарисуйте круговую диаграмму, состоящую из 10 заполненных секторов, используя различные орнаменты и цвета заполнения.4. Нарисуйте заполненные различным орнаментом и цветом заполнения треугольник, трапецию и звезду.5. Нарисуйте шестигранную призму, вид сверху и сбоку. Все видимые грани заполните различным орнаментом и цветом заполнения.6. Нарисуйте свои инициалы в виде заполненных многоугольников.7. Изобразите горизонтальную последовательность, состоящую из 16 различных заполненных эллипсов.8. Нарисуйте последовательность из 16 разноцветных заполненных звёзд.9. Нарисуйте график функции синус, состоящий из 40 параллелепипедов различного цвета и высоты.10.Нарисуйте египетскую "ступенчатую" пирамиду, вид сверху и сбоку. Грани "освещённые" одинаково заполните одинаковым цветом и орнаментом.