Лекция 8 Кривые линии и ограничение изображения. Дуга окружности Конечно же, хочется рисовать не только прямые линии, но и …, разумеется, например, окружности.

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



Advertisements
Похожие презентации
Графика в QBASIC РИСОВАНИЕ ПРЯМОУГОЛЬНИКОВ РИСОВАНИЕ ОКРУЖНОСТЕЙ Режимы экрана РИСОВАНИЕ дуг эллипсов Закраска произвольной области.
Advertisements

Познакомиться с созданием рисунков в QBasic, изучить графические примитивы, научиться их применять на практике.
Операторы графики. Ориентация и информационная емкость графического экрана (0,0) х Пиксел - минимальный элемент изображения Y Номер режима Формат текста.
Машинная графика Операторы построения точки, отрезка, прямоугольника, закрашенного прямоугольника.
Оператор SCREEN графический оператор, устанавливающий режим и другие характеристики экрана формат записи SCREEN [режим], где режим целое выражение, указывающее.
Операторы машинной графики. содержание Общие сведения PSET LINE DRAW CIRCLE PAINT.
ГРАФИЧЕСКИЕ ОПЕРАТОРЫ в программе Q-basic. Оператор SCREEN N этот оператор очищает экран и задает графический режим. ( Без него программа с графикой работать.
Аналитическое задание фигур Пусть прямая задана уравнением ax + by + c = 0 и проходит через точку A 0 (x 0, y 0 ). Ее вектор нормали имеет координаты (a,
Построение фигур Дуга, окружность, прямоугольник, эллипс.
Векторная компьютерная графика © Разработка : Габриков А. А. МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ.
Графика REM, SCREEN, LINE, PSET, CIRCLE, PAINT, DRAW…
Компьютерная геометрия и графика. Лекция 7. План занятия: Задача удаления невидимых линий. Алгоритм плавающего горизонта.
Векторное кодирование графической информации 6 класс Цель: познакомится с идеей векторного способа представления изображений в цифровом виде.
Использование графических методов. DRAW.BEGIN(DRAWAREA1) DRAW.BEGIN(FMain) DRAW.LINE (X1,Y1,X2,Y2) Использование графических методов. С помощью методов.
Лекция 10 Варианты использования PostScript. Возможности использования GSView Оболочка интерпретатора GhostScript обычно содержит много замечательных.
Презентация к уроку © Составил : Габриков А. А. МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА 7 г. ИРКУТСКА ИРКУТСК 2009.
Графика в QBasic Qbasic является векторным графическим редактором, т.е. графические элементы строятся (вычисляются) по формулам. Для этого достаточно задать.
Задание графического режима Линия Прямоугольник Окружность Эллипс Дуга выход Тест 2Тест 1 содержание.
Аналитическое задание фигур Пусть прямая задана уравнением ax + by + c = 0 и проходит через точку A 0 (x 0, y 0 ). Ее вектор нормали имеет координаты (a,
Математические основы векторной графики Миром правят числа…
Транксрипт:

Лекция 8 Кривые линии и ограничение изображения

Дуга окружности Конечно же, хочется рисовать не только прямые линии, но и …, разумеется, например, окружности. Команда arc прорисовывает (добавляет к пути) дугу окружности. Ее точный формат x y r a1 a2 arc При таких параметрах проводится дуга окружности с центром в точке (x,y) и радиусом r от угла a1 до угла a2. Дуга проводится против часовой стрелки. Для дуг, проводимых по часовой стрелке имеется команда arcn. Уточнение: до рисования дуги проводится отрезок от текущей точки до начала дуги, если вы не хотите, чтобы этот отрезок появился, установите сами правильную начальную точку.

Пример с рисованием дуг Вот красивый пример старинный восточ- ный символ Инянь, олицетворяющий соединение двух противоположных начал.

Текст примера %! /disk {dup CP 4 2 roll 0 rm arc}def % полезное действие, рисует окружность данного % радиуса с центром в текущей точке /R 20 def /RH R 0.5 mul def /Rhole R 0.05 mul def T % черная часть фигуры 0 R m 0 0 R arc % левая часть 0 RH neg RH arc % низ правой части 0 RH dup arcn F % верх правой части 0 RH m Rhole disk F % черная точка GS 0 RH neg m Rhole disk WHITE F GR % белая точка 0 LW % внешняя окружность 0 0 m R disk S showpage

Закругление Кроме непосредственного рисования дуг окружностей в Постскрипте предусмотрена возможность рисования закруглений углов. Действия arcto и arct вписывают дугу данного радиуса в заданный угол. Мы здесь рассмотрим только arct. Его формат x1 y1 x2 y2 r arct Пусть текущая точка обозначена через A, и имеются точки B=(x1,y1) и C=(x2,y2). В угол ABC вписывается окружность радиуса r. Действие arct проводит прямую линию по AB до точки касания и дугу окружности до точки касания на BC. Эта вторая точка касания и становится текущей.

Кривые Безье Безье это наш современник (возможно, он еще жив). Он работал инженером-проектировщиком во французской автомобильной фирме на заре компьютерных методов проектирования. Предложенное им семейство кривых оказалось очень удобно и используется не только в Постскрипте. Действие x1 y1 x2 y2 x3 y3 curveto проводит гладкую кривую, соединяющую текущую точку (x0,y0) с точкой (x3,y3), причем направление этой кривой в начальной точке совпадает с направлением на точку (x1,y1), а в конечной точке с направлением на (x2,y2). Степень прилегания кривой к направлениям зависит от удаленности этих направляющих точек.

Математические подробности oКривые Безье – это частный случай полиномов Бернштейна. oДля тех, кто жаждет математических подробностей: oкривая Безье задается параметрически полиномами третей степени ox(t) = a_x t^3 + b_x t^2 + c_x + x_0, oy(t) = a_y t^3 + b_y t^2 + c_y + y_0, oпричем параметр t пробегает значения от 0 до 1. Контрольные точки связаны с коэффициентами следующими равенствами ox1 = x_0 + c_x/3, x2 = x1 + (c_x + b_x)/3, ox3 = x0 + a_x + b_x + c_x, oи совершенно аналогично для y.

Интерфейсные подробности В программных системах, использующих Постскрипт и предназначенных для визуальных изменений графики, например, в CorelDraw и в FontLab, отрезки кривых, описываемые кривыми Безье, в режиме редактирования изображаются с двумя «булавками». Пользователь может перемещать концы этих булавок, и кривая Безье сразу же изменяется. Попробуйте сами нарисовать кривую Безье с такими «булавками»

Мой вариант решения %! /m{moveto}def /l{lineto}def LW{setlinewidth}def /GS{gsave}def /GR{grestore}def /CP{currentpoint}def /S{stroke}def /F{fill}def /BLUE{0 0 1 setrgbcolor}def /pin{GS l CP BLUE 0 LW S m CP arc F GR}def /pcurveto{GS 6 copy m pin GR GS pin GR curveto S}def m 1.5 LW pcurveto showpage

Рисование внутри контура Сейчас настал момент описать еще одно использование замкнутых путей. Путь может задавать область, внутри которой должна находиться видимая часть рисунка. Для того, чтобы достичь такого эффекта, нужно после построения замкнутого контура выполнить действие clip, а затем действие newpath, открывающее образование нового пути. Рисование этого нового пути (или закраска) использует ограничивающий контур и вызовет его потерю. Однако, так как ограничивающий контур входит в графическое состояние, то сохранением состояния, можно сохранить и его.

Небольшой пример Что нужно сделать, чтобы несколько геометрических фигур «подсунуть друг под друга» в циклическом порядке? Если мы будем просто рисовать одну фигуру за другой, то последняя нарисованная фигура окажется верхней. Слева показано, что получилось, тонкой рамкой обведено неправильное место. Его просто поправить, если внутри рамки нарисовать заново первую фигуру. Так получен рисунок в центре. Справа показано, что так можно делать и более сложные вещи.

Программа для картинки /FS{GS 0.75 setgray fill GR stroke}def /V { rm rl 15 hrl CL FS} def % клин 1.2 LW % Левая картинка: рисуются 6 закрашенных клиньев m 6 {GS CPT V GR 60 rotate} repeat % рамка вокруг «неправильного» места, % где самый последний клин лежит выше всех GS rm 25 vrl 25 hrl -25 vrl CL 0.5 LW S GR % Центральная картинка: такие же клинья m 6 {GS CPT V GR 60 rotate} repeat % потом строится та же рамка GS rm 25 vrl 25 hrl -25 vrl CL % но рамка не рисуется, а объявляется огранич. % контуром, и путь начинает строиться заново clip newpath m V GR % нарисованный клин изобразился только внутри рамки showpage