Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры 1 шпоры.docx
Скачиваний:
21
Добавлен:
22.09.2019
Размер:
1.52 Mб
Скачать

1.Двумерные алгоритмы. Преобразование координат: сдвиг, поворот.

Преобразование и новые координаты Сдвиг:

Р ассмотрим следующую систему уравнений

Эти уравнения можно интерпретировать двояким образом:

1)Все точки на плоскости ху переместились вправо на расстояние а

2)координатные оси х и у переместились влево на расстояние а

  Пусть необходимо повернуть точку Р(х,у) вокруг начала координат О на угол φ. Изображение новой точки обозначим P(x,y). Существуют четыре числа а,b,c,d, такие, что новые координаты х, y могут быть вычислены по значениям старых координат х и у из следующих уравнений

x'=ax+by

y'=cx+dy

Для получения значений а,b,c,d рассмотрим вначале точки (х, у) = (1, 0). Полагая х=1 и у=0 в этой системе получим

        x’=a

        y=c.

  Но в этом простом случае,как это видно из следующего рисунка, значения x и y’ равны соответственно cos φ и sin φ. Тогда будем иметь

                а = cos φ

                с =  sin φ

Аналогичным образом из второй половинки рисунка следует

             b = - sin φ

             d  = cos φ

Т огда исходную систему можно переписать

    x’ = x cos φ – y sin φ

    y’ = x sin φ + y cos φ

 

Поворот:

Эта система описывает поворот вокруг начала координат, но обычно это не то, что требуется. Если требуется выполнить поворот относительно заданной точки  (х00),то в этом уравнении можно заменить х на х-х0, у на у-у0, x’ на x’-x0, y’ на у‘-у0

  x' –x0=(x-x0) cos φ- (y-y0) sin φ

  y' – y0=(x-x0) sin φ + (y-y0) cos φ           (2)

 Матричная запись

С истема уравнений (2)  может быть записана в виде одного матричного уравнения

[x’ y’]= [x y] 

  или с использованием вектора столбца

=

у равнение переноса можно записать в виде

 [x’ y’] =[x y 1]  

, но лучше записать в виде

[x’ y’] =[x y 1]*

Запись каждого преобразования в форме произведения матриц позволяет совмещать несколько преобразований в одном.

2.Двумерные алгоритмы. Окна и Области вывода. Отсечение линий (общее представление, простой алгоритм). Автоматический подбор размеров и позиций.

ОКНА:

Часто встречаются ситуации. Когда требуется вычертить объекты, размеры которых заданы в единицах, совершенно не совместимых с экранной системой координат.

Проблемно-ориентированные размеры выражаются в так называемых мировых координатах.(х,у).

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

Необходимо также задать прямоугольную область на экране, которая  определит размеры желаемой картинки. Эта область называется областью вывода. Она задается аналогично окну, то есть указываются минимальное и максимальное значения по координатным осям Х и У в единицах измерения на экране, значения которых будут определяться прописными буквами Х и У. Теперь окно нужно отобразить на область вывода. Вначале вычисляются коэффициенты масштабирования по осям: Xmax-Xmin

 fx = xmax- xmin

fy = Ymax-Ymin

ymax- ymin

Затем расстояние X-Xmin точки изображения от левого края области вывода вычисляется умножением коэффициента fx  на соответствующее расстояние  х-хmin

От исходной точки до левого края окна. Расстояние Y – Ymin Следовательно, координаты точки изображения будут определены из соотношений

  X = Xmin + fx (x  - xmin)

  Y = Ymin + fy (y – ymin)

Сделаем замечания.

1)Окно не обязательно должно охватывать весь объект.

2)fx  и fy  могут быть различны, но если углы на  изображении должны бытьтакими же как на объекте, то их надо установить равными, выбрав меньший из коэффициентов 

ОТСЕЧЕНИЕ ЛИНИЙ:

Предположим, что мировые и экранные координаты одинаковые, то есть совпадают:

На рисунке показан прямоугольник ABCD, который является окном. В видимые отрезки и линии должны лежать внутри окна. То есть при вычерчивании отрезка прямой линии части, лежащие вне окна, должны быть отсечены. Процесс отсечения должен выполняться автоматически.

На рисунке прямоугольник ABCD вычерчивается раньше, чем треугольник PQR, так что вместо этого треугольника надо вычертить ломаную PP’Q’Q.

П оскольку заданы только три точки  P, Q и R, координатная пара (xp, yp) должна быть вычислена из значений координат точек (xp, yp)  и (xR,yR).Из рисунка видно, что наклон отрезка PR можно вычислить двумя способами,  что приводит к следующему уравнению       

        

        

Совмещая это с соотношением

 yp = ymax

п олучим

xp=  xp

Отсюда легко вычисляются координаты точки P’, если известно, что концевая точка Р находится внутри окна, а другая концевая точка R (xR, yR) удовлетворяет неравенствам

     xmin < xR < xmax

      yR > xmax

Однако необходимо рассмотреть значительно больше ситуаций. Представим их в таблице

1001

0001

0101

1000

0000

0100

1010

0010

0110

В этой таблице с любой точкой P (x, y) ассоциируется четырехбитовый код

b3b2b1b0, где bi т быть либо 0, либо 1.

Запишем значения битов используя выражения языка Pasсal

b3 = (x < xmin)

b2 = (x > xmax)

b1 = (y < ymin)

b0 = (y > ymax)

АВТОМАТИЧЕСКИЙ ПОДБОР РАЗМЕРОВ И ПОЗИЦИЙ:

Чтобы картинка была нарисована в пределах границ области вывода, необходимо сначала выполнить отсечение по заданному окну, а затем отразить окно и его содержимое на область вывода. Для многих приложений такая процедура вполне достаточна. Однако достаточно часто требуется другой подход, который отличается следующими аспектами:

1)Объект будет вычерчиваться целиком, так что отсечение не понадобится;

2 )Окно будет определено расчетом, а не задано заранее;

3)при отражении окна на область вывода будет использоваться одинаковый коэффициент масштабирования по обеим осям.

Из первого пункта следует, что объект должен быть конечным.

П ункт 2 может быть реализован путем двойного просмотра данных, описывающих объект. Во время первого просмотра определяются границы окна xmin, xmax, ymin, ymax,

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

В качестве коэффициента масштабирования  f выберем наименьшее из значений fx, fy:    f = min (fx, fy).

Совершенно ясно, что такой одинаковый коэффициент масштабирования дет к отображению треугольника, который точно равен по величине размеру области вывода по одной из осей, а по другой может остаться свободное пространство. Таким образом изображение желательно поровну разделить соответственно между верней и нижней, между правой и левой частями области вывода. Для этого необходимо правильно рассчитать позицию центра С: Cх:  xc = (xmin + xmax) / 2

Xc = (Xmin + Xmax) / 2

Cx = Xc – f xc

  Cy: Для Cy аналогично.

Для любой точки объекта (x, y)

X = fx +cx

Y = fy + cy