Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Машинные координаты




Начало машинной системы координат, направление осей, а также максимальные значения координат монитора показаны на рисунке.
Вы видите, что оси координат направлены вправо (ось OX) и вниз (ось OY). Направления осей координат на мониторе показаны стрелочками с заострением.

На рисунке приведены машинная (xm, ym) и физическая (x,y) системы координат. Для изображения на экране точки с физическими координатами (x,y) необходимо определить ее машинные координаты (xm, ym). Расчетные формулы имеют следующий вид:

xm=x0+x*Mx , ym=y0-y*My,

где Mx, My-масштабы соответственно по осям x и y, которые показывают число пикселей в одной физической единице,

x, y- физические координаты точки,
xm, ym- машинные координаты точки,
x0, y0- машинные координаты начала физической системы координат.

Процедура SetFillStyle устанавливает цвет закраски. Обращение к ней имеет вид: SetFiullStyle(Pattern: word, Color: word);
Режим: Real, Protected.
Устанавливает цвет и шаблон для всех операций закраски. Доступны несколько предопределенных шаблонов закраски. Заданный по умолчанию шаблон: Solid и заданный по умолчанию цвет - цвет с максимальным номером в палитре. Если в SetFillStyle переданы недопустимые параметры, то в переменной GraphResult вырабатывается значение GrErr0r, и текущие установки закраски не меняются.
Если Pattern равняется UserFill, то активным шаблоном закраски станет шаблон, опеределенный пользователем. Устанавливается с помощью процедуры SetFillPattern. Ограничения: всегда нужно быть в графическом режиме.

Процедура FloodFill закрашивает замкнутую область, используя стиль и цвет закраски. Обращение к ней имеет вид:
Procedure FloodFill(X, Y: integer; border: word);
Закрашивает замкнутую область на растровых устройствах. Точка с координатами (X, Y) - начальная точка внутри замкнутой области, с которой начинается закраска. Текущий шаблон закраски устанавливается процедурами SetFillStyle и SetFillPattern. Закрашивается область, ограниченная цветом с номером Border. Если точка (X, Y) находится внутри замкнутой области, то закраска будет происходить внутри замкнутой области. Если же эта точка находится снаружи замкнутой области, то будет закрашено все пространство вне области. Если во время закраски происходит ошибка, то в переменной GraphResult будет находится значение grNoFloodMem.

Таким образом, рассмотренный только что Вами фрагмент программы выполняет следующие действия:

1). Устанавливается текущий цвет фона, равный 9.
2). Устанавливается текущий цвет для проведения линии на поле рисунка, равный 8.
3). В нижней части экрана (рисунка) проводится прямая линия на расстоянии 50 единиц от максимального значения по оси OY (то есть от нижнего края экрана) параллельно оси OX от точки (0, y-50) до точки (x, y-50). Здесь в ячейках X и Y находятся предварительно вычисленные максимально возможные координаты точек на экране по двум осям координат. Далее полученная прямоугольная область закрашивается цветом, имеющим код 6 (то есть коричневый цвет) от точки с координатами x=5 и y=y-40 до бордюра (прямой линии, контура), имеющего цвет, равный цвету проведенной прямой линии с кодом 8. В результате этих манипуляций в нижней части экрана получается закрашенная прямоугольная область коричневого цвета. Что Вы и наблюдаете на рисунке.

5.5. Продолжим только что успешно начатый разбор программы. Возьмем следующие очередные команды программы:

setfillstyle(1,14); {солнце}
setcolor(14);
pieslice(0,0,270,360,70);

Команда setfillstyle(1,14); устанавливает 14 цвет заливки (желтый). Команда setcolor(14); устанавливает тот же 14 цвет для рисования контура (тоже желтый). Обращаемся в Справочную систему Паскаля Turbo.tph и ищем там через Алфавитный список (index) сведения об операторе pieslice(0,0,270,360,70);. Находим их и читаем следующее:
Процедура PieSlice рисует и закрашивает сектор окружности. Обращение: PieSlice(x, y: integer; StAngle, EndAngle, Radius: word);.
Режим: Real, Protected.

Точка с координатами (x, y) - центр окружности. Сектор круга начинается от дуги, имеющей StAngel градусов и заканчивается в точке на дуге, соответствующей EndAngel градусам. Закраска выполняется в соответствии с установленным процедурой SetFillStyle цветом. В нашем случае это желтый цвет. В результате на рисунке от точки (0, 0) - от начала координат радиусом 70 единиц вычерчивается нижняя правая четверть обыкновенного круга, то есть дуга от 270 градусов до 360 градусов. Полученный объект закрашивается желтым цветом. Это точно соответствует тому, что Вы видите на рисунке.

5.6. Продолжим далее. Следующий фрагмент программы имеет вид:

setfillstyle(1,5);
setcolor(6); {ниж. часть дома} {Х=(х2+90)} {ширина=90}
rectangle(x2,y-50-150,x2+90,y-51); {Y=(y-200)} {высота=100}
floodfill(x2+5,y-60,6);

Команда setfillstyle(1,5); устанавливает малиновый цвет закраски. Команда setcolor(6); устанавливает коричневый цвет для контура рисунка. Команда rectangle(x2,y-50-150,x2+90,y-51); вычерчивает прямоугольную замкнутую область на экране от точки с координатами (x2, y-50-150) до точки с координатами (x2+90, y-51) коричневым цветом. Отметим, что в данном случае x2 - это половина размера экрана по оси OX, а координата y-50-150 на 150 единиц находится выше по оси OY от прямой линии, которая ранее была проведена на расстоянии 50 единиц от самого нижнего края рисунка (экрана) параллельно ему. Вторая координата прямоугольника находится правее центра по оси OX. Действительно, это так и есть, так как точка имеет координаты: x2+90 и y-51. Команда floodfill(x2+5,y-60,6); закрашивает только что полученный замкнутый контур прямоуголника с коричневой границей в малиновый цвет (код 5), установленным выше командой setfillstyle(1,5);.

5.7. Продолжим далее. Следующий фрагмент программы имеет вид:

setfillstyle(1,4); {крыша} {Y=(y-251)} {высота=50}
line(x2,y-50-151,x2+45,y-50-151-50);
line(x2+45,y-251,x2+90,y-199);
floodfill(x2+45,y-249,6);

В этом отрывке (фрагменте) программы устанавливается красный цвет для заливки. Смотрите команду setfillstyle(1,4);. Далее, как и прежде, коричневым цветом создается контур треугольника. Это будет крыша домика. Крыша ложится на прямоугольник - основная часть домика, который рисовался так же коричневым цветом. Смотрите команды: line(x2,y-50-151,x2+45,y-50-151-50); и line(x2+45,y-251,x2+90,y-199);. Далее выполняется заливка треугольника (крыши) красным цветом и т.д..

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...