Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графика в Pascal.doc
Скачиваний:
33
Добавлен:
10.06.2015
Размер:
990.21 Кб
Скачать

Точки на экране

Процедура PutPixel

Рисует точку на экране в заданном месте заданным цветом.

Описание: PutPixel (x, y, цвет).

Примечания: Выводит точку на экране с координатами (x, y)заданным цветом (параметр "цвет").

Пример 1:

Examp_2;

Данная программа рисует линию из точек. Поменяйте шаг выполнения цикла – изменится число точек в линии. При шаге, равном 1, линия будет сплошной.

Пример 2:

Нарисовать сетку, заполняющую прямоугольную область, центр которой совпадает с центром экрана. Рисование выполнить "по точкам", т.е. высвечивая соответствующие пиксели. Рассмотреть два случая:

а) стороны прямоугольной области параллельны сторонам экрана;

б) прямоугольная область повернута на некоторый угол.

Вариант а).

Рисуем сетку так, чтобы каждая линия выходила на полшага за крайнюю перпендикулярную линию. Нам будет удобнее считать, что число шагов сетки по каждой оси – четное. Пусть Step– шаг сетки,nx,ny– половина числа шагов по осямX,Y. Размах (половина длины) горизонтали составляет

rx=Step*nx+Step div 2

и, аналогично, размах по вертикали:

ry=Step*ny+Step div 2.

Начнем с проведения горизонталей. Делать это будем сверху вниз. Пусть yg– центральная координата по осиYочередной горизонтали. Тогда для ее проведения надо нарисовать заданным цветом точки с центральными координатами(X, yg), гдеXпробегает все значения от -ryдоryс шагом 1. Разумеется, перед выводом точки на экран, ее центральные координаты надо перевести в экранные. Далее находим новое значение центральной координаты по осиYочередной горизонтали:Yg=Yg-Stepи повторяем этот процесс. Его надо выполнить2*Ny+1раз. Удобно, чтобы переменная цикла пробегала значения отNyдо –Nyс шагом 1.

Осталось указать начальное значение Yg. Понятно, что оно составляетStep*Ny.

Вертикальные линии проводятся аналогично и мы не будем на этом останавливаться. Соответствующая программа:

ProgramExamp_3;

Вариант б).

Данная задача иллюстрирует известное положение: хотя все координатные системы равноправны, но для конкретной задачи некоторая координатная система может оказаться удобнее других. В нашем случае наиболее удобной является координатная система, оси которой параллельны сторонам прямоугольной области, а начало по прежнему находится в ее центре. Эту систему назовем "местной". Тогда методика, изложенная в предыдущей задаче, полностью применима и в данном случае. Единственное, что надо учесть, - перед выводом точки на экран ее местные координаты надо перевести в центральные, а их, затем, в экранные. Остается получить формулы перехода от местных координат X,Yк центральнымXc,Yc. Центральная координатная система получается из местной поворотом на заданный угол альфа по часовой стрелке (см. рисунок).

Пусть R– радиус-вектор произвольной точки (он одинаков в обеих системах), φ – угол наклона радиуса-вектора к местной осиХ. Тогда центральные координаты выражаются по формулам:

Xc=R*cos(φ+α);

Yc=R*sin(φ).

Если вспомнить формулы для косинуса и синуса суммы углов и учесть, что

X=R*cos(φ);

Y=R*sin(φ),

то получим интересующие нас формулы:

Xc=X*cos(α)-Y*sin(α);

Yc=X*sin(α)+y*cos(α).

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

Program Examp_4;