Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

ТЕМА 2. ДВУМЕРНЫЕ ПРЕОБРАЗОВАНИЯ

2.1.  Общие замечания

В компьютерной графике, наряду с соответствующими алгоритмами рисования, важно иметь математический аппарат, позволяющий редактировать изображение, т. е. осуществлять его преобразование (модификацию) в соответствии с требованиями решаемой задачи. Необходимо уметь производить с графическими объектами (точками, отрезками прямых, плоскими и объемными фигурами) такие операции, как масштабирование (в том числе пропорциональное), сдвиги, симметричные отражения (относительно точки, линии, плоскости), повороты (например, относительно какой-либо точки или линии), перемещения и т. п. Подобные действия и их комбинации обычно реализуются с помощью матричных операций с данными. Краткие сведения об основах матричных преобразований, используемых при формировании двумерных сцен, приведены ниже (в рамках данной темы). Аналогичные преобразования при формировании объемных сцен кратко рассмотрены в следующей теме.

2.2.  Простые преобразования точек

Точка P на плоскости однозначно определяется двумя своими координатами (x, y). В соответствие ей можно поставить матрицу-строку размером 1´2 вида (сначала будем использовать именно такое отображение точки). Следует заметить также, что точка может задаваться и соответствующей матрицей-столбцом размером 2´1. В любом случае матрицу, определяющую положение точки, часто называют координатным вектором или вектором положения.

Большинство из перечисленных выше элементарных преобразований по отношению к точке можно реализовать путем умножения матрицы на матрицу общего преобразования размером 2´2 вида :

,

где , – координаты точки P*, являющейся результатом преобразования точки P, причем .

Рассмотрим некоторые специальные случаи.

Умножение исходной матрицы на единичную 2´2 матрицу (a = d = 1, b = c = 0)

не приводит к каким-либо изменениям; поэтому подобную единичную матрицу часто называют матрицей тождественного преобразования.

НЕ нашли? Не то? Что вы ищете?

В случае d = 1, b = c = 0

– происходит так называемое локальное масштабирование (растяжение при |a| > 1 или сжатие при 0 < |a| < 1) координаты x () без изменения координаты y; если при этом a < 0, кроме масштабирования происходит отражение относительно оси y.

В аналогичном случае, когда a = 1, b = c = 0,

– происходит локальное масштабирование (растяжение при |d | > 1 или сжатие при 0 < |d | < 1) координаты y () без изменения координаты x; при d < 0 масштабирование сопровождается отражением относительно оси x.

В общем случае, когда b = c = 0,

– наблюдается локальное масштабирование обеих координат; кроме того, при a < 0, d > 0 происходит отражение относительно оси y, при a > 0, d < 0 – отражение относительно оси x, при a < 0, d < 0 – отражение относительно начала координат.

Проиллюстрируем это следующими примерами.

Примем в качестве исходной точку P (2, 2) с вектором положения . Умножение данного вектора на матрицу общего преобразования с a = 2, d = – 0,5 (при b = c = 0) дает

,

т. е. растяжение в 2 раза координаты x, сжатие в 2 раза координаты y и отражение относительно оси x (рис.2.1а).

Исходя из этого примера, нетрудно установить, что умножение на матрицу приводит к симметричному отражению исходной точки относительно оси x (рис.2.1б).

Если при прочих равных условиях a = – 1, d = 1,

– происходит симметричное отражение исходной точки относительно оси y.

Если же a = d = – 1,

– наблюдается симметричное отражение точки P относительно точки начала координат (рис.2.1в).

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

Посмотрим теперь, на что влияют недиагональные члены этой матрицы.

Пусть a = d = 1, c = 0. Тогда

– координата x*= x осталась неизменной, а координата y* стала линейно зависеть от исходной координаты x; произошел так называемый сдвиг вдоль оси y пропорционально координате x (на bx).

Аналогично, когда a = d = 1, b = 0,

– происходит сдвиг вдоль оси x пропорционально координате y (на cy).

Проиллюстрируем эти случаи, используя в качестве исходной прежнюю точку P (2, 2). Зададим b = 0,5 при a = d = 1, c = 0. В результате преобразования получим

,

т. е. сдвиг на вдоль оси y (рис.2.1г).

Задавая c = – 1,5 при a = d = 1, b = 0, получаем

– сдвиг на вдоль оси x (рис.2.1д).

Совместим оба преобразования: b = 0,5, c = – 1,5, a = d = 1; получим

– соответствующие сдвиги вдоль обеих координатных осей (рис.2.1е).

Таким образом установили, что недиагональные члены матрицы преобразования создают эффект сдвига координат исходной точки вдоль координатных осей.

Рассмотренные приемы преобразования точки можно обобщить на аналогичные преобразования отрезков прямых и многоугольников (см. ниже). Вместе с тем, более сложные варианты преобразования, рассмотренные далее применительно к отрезкам и многоугольникам, можно использовать и для точек.

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

;

т. е. начало координат инвариантно относительно данного преобразования.

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

2.3.  Простые преобразования отрезков прямых и многоугольников

Отрезок прямой линии определяется координатами двух его концов: A (x1 , y1) и B (x2 , y2). Или двумя координатными векторами: и . Более компактно можно задать отрезок матрицей размером 2´2 вида .

Аналогичным образом многоугольник может быть представлен M´2 матрицей (где M – число вершин многоугольника), в строки которой в строгой последовательности занесены координаты его вершин, т. е. матрицей вида .

Используя 2´2 матрицу общего преобразования вида , с отрезками и многоугольниками можно осуществлять преобразования, аналогичные тем, которые рассмотрены в предыдущем разделе по отношению к точкам.

Приведем примеры. Преобразуем сначала отрезок с концами A (0, 1) и B (2, 2) (рис.2.2), заданный соответственно матрицей , с помощью матрицы преобразования :

;

в результате, выполнив операцию сдвига в двух направлениях, получили новый отрезок с концами A*(2, 1) и B*(6, 5) (рис.2.2).

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

§  отрезок прямой линии преобразуется в отрезок другой прямой линии;

§  все точки преобразованного отрезка непосредственно со­ответствуют всем точкам ис­ходного отрезка;

§  пересекающиеся отрезки пре­образуются в пересекаю­щиеся отрезки, причем (как следствие предыдущего пункта) точка пересечения преобразованных отрезков соответствует точке пересечения исходных отрезков;

§  результатом преобразования параллельных отрезков будут па­раллельные отрезки.

Осуществим теперь симметричное отражение треугольника с вершинами A (1, 1), B (2, 3) и C (4, 2) (рис.2.3) относительно оси x, используя матрицу преобразования :

;

результат преобразования – треугольник A*B*C* (рис.2.3).

2.4.  Поворот

С помощью 2´2 матрицы общего преобразования можно организовать и повороты точек, отрезков и многоугольников относительно начала координат. В рассматриваемой системе координат (здесь и далее используется правосторонняя система координат) при повороте в положительном направлении (по правилу правой руки – против часовой стрелки) на 90°, 180° и 270° применяют матрицы соответственно , и (разумеется, повороту на 0° или 360° будет соответствовать матрица тождественного преобразования ).

Для наглядности осуществим такие преобразования с треугольником ABC из предыдущего примера (на рис.2.4 – треугольник F ). Повернем его на 90° –

,

затем на 180° –

,

и, наконец, на 270° –

;

в результате преобразований получили треугольники соответственно F *, F ** и F *** (рис.2.4).

Рассмотрим теперь, как осуществить поворот на произвольный угол q на примере преобразования точки P (x, y) (рис.2.5). Вектор положения данной точки равен

,

где r – длина вектора, а j – угол наклона вектора по отношению к оси x.

Вектор положения точки P* (x*, y*), полученной из исходной точки путем ее поворота относительно начала координат на положительный угол q , равен соответственно

;

или, после преобразований –

.

Таким образом, преобразованная точка имеет координаты

, .

В матричном виде операцию преобразования можно записать так:

.

Другими словами, поворот относительно начала координат на произвольный угол q задается матрицей преобразования .

2.5.  Отражение относительно прямых у = x и у = – x

Как было установлено выше, симметричное отражение относительно оси x (прямой у = 0), относительно оси у (прямой x = 0) и относительно начала координат (точки с x = 0 и у = 0) можно осуществить, используя матрицы преобразования соответственно , и (последнее преобразование, кстати, идентично повороту на 180°). Рассмотрим еще два вида симметричного отражения: относительно прямых у = x и у = – x. Они реализуются матрицами преобразования соответственно и . Приведем пример данных преобразований треугольника F (рис.2.6):

– первое преобразование дает треугольник F* (рис.2.6);

– второе – треугольник F** (рис.2.6).

2.6.  Пропорциональное и непропорциональное локальное масштабирование

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

В первом случае

– происходит пропорциональное (или равномерное) масштабирование (конкретно – увеличение в два раза) исходного треугольника относительно точки начала координат без какого-либо искажения его формы; результат преобразования – треугольник F* (рис.2.7).

Во втором случае

– происходит непропорциональное (или неравномерное) масштабирование; исходный треугольник преобразуется в треугольник F** (рис.2.7) с явным искажением, обусловленным разными коэффициентами масштабирования по осям x и у.

Заметим, что первое преобразование сводится к умножению на один и тот же масштабный коэффициент (a = d = 2) компонент x и у координатных векторов вершин исходного треугольника. Во втором преобразовании компоненты x координатных векторов умножались на один масштабный коэффициент (a = 4 ), а компоненты у – на другой (d = 0,5 ).

Приведенный пример позволяет сделать следующие выводы:

§  матрица преобразования вида при a = d осуществляет пропорциональное локальное масштабирование относительно точки начала координат; причем, если a = d > 1, происходит равномерное расширение, т. е. увеличение исходной фигуры, если же 0 < a = d < 1, имеет место равномерное сжатие, т. е. фигура уменьшается;

§  та же матрица при 0 < a ¹ d > 0 осуществляет непропорциональное локальное масштабирование; неравномерное расширение и сжатие возникают в зависимости от значений (в рассматриваемом случае – положительных) a и d, которые могут быть больше или меньше, чем 1, независимо друг от друга.

2.7.  Комбинированные преобразования

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

,

где – матрица n-го преобразования, n = 1, 2, …, N.

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

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

.

Продемонстрируем оба возможных подхода к комбинированному преобразованию на простом примере. Пусть требуется исходную фигуру – например, треугольник F (рис.2.8), координаты вершин которого сведены в 3´2 матрицу – повернуть на 90° вокруг точки начала координат и затем полученную промежуточную фигуру симметрично отразить относительно прямой у = – x. Первому преобразованию соответствует матрица , а второму – матрица . Осуществим последовательно соответствующие умножения:

;

очевидно, что первое умножение приводит к промежуточному результату – треугольнику F¢ (рис.2.8), второе – к конечному результату – треугольнику F* (рис.2.8).

Используем другой возможный путь комбинированного преобразования: рассчитаем матрицу полного преобразования

и умножим на нее исходную матрицу

;

результат – треугольник F* (рис.2.8) – в точности совпадает с предыдущим.

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

2.8.  Однородные координаты

Ранее было замечено, что использование двумерных координатных векторов, отображающих точки на плоскости, в совокупности с матрицей общего преобразования размером 2´2 накладывает ряд ограничений на модификацию объектов. В первую очередь, эти ограничения обусловлены невозможностью применения преобразования координат. Существенно расширить возможности модификации позволяет использование однородных координат для отображения точек и, соответственно, матрицы общего преобразования размером 3´3.

Однородные координаты точки P (x, y) на физической плоскости xy представляют собой тройку чисел x¢, y¢, h; первые два из них связаны с реальными координатами точки соотношениями x¢ = hx и y¢ = hy, а h – это некоторое вещественное число (отметим, что случай h = 0 является особым и будет рассмотрен ниже). Однородным координатам точки можно поставить в соответствие трехмерный координатный вектор (вектор положения) – матрицу размером 1´3 вида . Очевидно, что при таком подходе каждую точку можно связать с бесконечным множеством наборов однородных координат и, соответственно, координатных векторов вида . Вместе с тем, для точки имеется лишь один набор однородных координат со значением h = 1; ему соответствует вектор положения вида . В компьютерной графике для отображения точек (за исключением точек бесконечности, см. далее) используются координатные векторы именно такого вида.

Применяя к вектору положения исходной точки матрицу общего преобразования размером 3´3 вида , получаем:

.

Данный результат практически идентичен тому, который был получен при умножении координатного вектора на матрицу общего преобразования размером 2´2 (см. выше). Выражения для координат и преобразованной точки в обоих случаях полностью совпадают. Следовательно, использование однородных координат совместно с матрицей общего преобразования вида позволяет осуществить все те преобразования точек, отрезков и многоугольников, о которых шла речь выше (это и происходит при реальной обработке графических объектов). Задавая соответствующие значения a, b, c и d, можно реализовать тождественное преобразование, операции локального масштабирования, отражения, сдвига и поворота, аналогичные уже рассмотренным. Однако, все они, по-прежнему, будут осуществляться относительно точки начала координат.

2.9.  Перемещение

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

;

полученный результат можно трактовать двояко: с одной стороны, можно считать, что операция привела к перемещению исходной точки вдоль осей x и y соответственно на m и n в исходной системе координат x0y (рис.2.9а); с другой стороны, можно полагать, что точка осталась на месте, а произошло преобразование координат – новая система координат x*0*y* сдвинута относительно исходной на m вдоль оси x и на n вдоль оси y (рис.2.9б).

В любом случае, выяснилось, что элементы m и n матрицы преобразования размером 3´3 являются коэффициентами перемещения в направлениях x и y соответственно. И не менее важный вывод из приведенного примера – теперь каждая точка плоскости, в том числе начало координат, может быть преобразована.

2.10.  Поворот вокруг произвольной точки

Имея более мощный, чем ранее, математический аппарат можно реализовать и такое преобразование. Последовательность действий при этом может быть следующей:

§  объект преобразования перемещается таким образом, чтобы точка, относительно которой совершается поворот, попала в начало координат;

§  выполняется поворот объекта на требуемый угол вокруг точки начала координат;

§  осуществляется обратное перемещение объекта так, чтобы точка центра вращения возвратилась на исходное место.

Применительно координатному вектору точки подобная операция поворота вокруг точки с координатами (m, n) на произвольный угол q реализуется следующими матричными преобразованиями:

;

комбинируя три матрицы преобразования, получаем

.

Приведем простой пример рассмотренной операции: поворот отрезка L (рис.2.10), заданного однородными координатами его концов и , на 90° в положительном направлении (против часовой стрелки) вокруг точки с координатами (4, 5 ). Обобщая предыдущее выражение на случай преобразования отрезка, запишем (после подстановок в матрицу преобразования конкретных значений и расчета входящих в нее коэффициентов)

;

результат преобразования – отрезок L* (рис.2.10).

2.11.  Отражение относительно произвольной прямой

В разделе 2.5 обсуждались случаи отражения относительно ряда характерных прямых, проходящих через точку начала координат. Рассмотрим теперь более сложное преобразование – симметричное отражение объекта относительно произвольной прямой линии, причем не проходящей через начало координат. Используемый теперь подход позволяет достичь этого преобразованием, включающим пять последовательных операций:

§  перемещение объекта преобразования вдоль оси x или y таким образом, чтобы линия, относительно которой он отражается, прошла через начало координат;

§  поворот объекта относительно точки начала координат до совпадения линии, относительно которой он отражается, с одной из координатных осей;

§  симметричное отражение объекта относительно данной координатной оси;

§  обратный поворот объекта относительно точки начала координат (на тот же угол, что и во втором пункте, но в обратном направлении);

§  обратное перемещение объекта вдоль оси x или y (на то же расстояние, что и в первом пункте, но в обратном направлении).

В матричном виде полное преобразование, представляющее собой комбинацию пяти преобразований, можно записать так:

,

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

Приведем конкретный пример: симметричное отражение треугольника F (рис.2.11а), координатные векторы вершин которого представляются как , и , относительно прямой линии . Для того, чтобы линия прошла через точку начала координат, можно осуществить перемещение вдоль оси y на – 2 единицы; поворот относительно начала координат на arctg 0,5 = – 26,57 ° приведет к тому, что линия совпадет с осью x; матрица отражения относительно оси x очевидна; обратный поворот и обратное перемещение осуществляются матрицами, обратными матрицам второго и первого преобразований. Композиция преобразований будет иметь вид:

;

реализуя полное преобразование, получим:

;

рис.2.11б, в, г, д иллюстрируют различные этапы промежуточных преобразований в случае последовательного их применения к исходной матрице, а рис.2.11е – конечный результат (который, вообще говоря, получен одной матричной операцией после расчета матрицы полного преобразования) – треугольник F*.

2.12.  Проецирование в однородных координатах

Матрицу общего преобразования для трехмерных координатных векторов, используемых при двумерных преобразованиях, в общем виде можно представить так:

.

Ранее было установлено, как входящие в нее коэффициенты a, b, c, d, m и n влияют на соответствующие преобразования. Остальным трем коэффициентам в предыдущих разделах присваивались вполне определенные значения ( p = q = 0, s = 1), и они, по сути дела, не принимали участия в преобразованиях. Координатные векторы преобразованных точек всегда имели вид , т. е. число h (см. раздел 2.8) тождественно принимало единичное значение. Геометрически это можно трактовать как ограничение преобразований физической плоскостью h = 1 в трехмерном пространстве xyh. Вместе с тем, при других значениях коэффициентов p, q и s они также могут участвовать в преобразованиях.

Рассмотрим сначала, к какому эффекту приведут ненулевые значения коэффициентов p и q. Запишем следующее выражение:

;

данное преобразование привело к тому, что точка (x, y), которой изначально ставился в соответствие координатный вектор вида , преобразована в точку, которой ставится в соответствие координатный вектор вида , где x¢ = x, y¢ = y, ; с геометрической точки зрения полученный результат интерпретируется следующим образом: в трехмерном пространстве xyh конец P (рис.2.12) координатного вектора исходной точки принадлежит плоскости h = 1, а конец P¢ координатного вектора преобразованной точки – плоскости (причем в данном конкретном случае две другие компоненты однородных координат и соответствующего координатного вектора остаются неизменными).

Однако, как отмечалось ранее, в компьютерной графике используют векторы положения только вида . Поэтому, когда какое-либо преобразование приводит к результату с h ≠ 1 (и, кстати, с h ≠ 0), этот результат нормализуют, т. е. приводят к требуемому виду путем деления всех трех составляющих однородных координат на величину h. В рассматриваемой задаче окончательный результат преобразования будет иметь вид

;

геометрически такой же результат, а именно точку P* (рис.2.12), можно получить путем проецирования точки P¢, принадлежащей плоскости h ≠ 1, на плоскость h = 1 по лучу, соединяющему точку P¢ с началом координат.

Нетрудно заметить, что при h > 1 (как на рис.2.12) координаты x* и y* преобразованной точки пропорционально уменьшаются (в h раз) по сравнению теми же координатами исходной точки; при h < 1 эти координаты будут пропорционально увеличиваться (в 1/h раз).

Таким образом, выяснили, что коэффициенты p и q в матрице преобразования при ненулевых значениях обусловливают операцию, которую принято называть проецированием в однородных координатах.

Приведем пример подобного преобразования отрезка L (рис.2.13), однородные координаты концов которого сведены в матрицу , при . Промежуточное преобразование дает

.

После нормализации однородных координат (проецирования) получим окончательный результат:

;

исходный отрезок преобразован в отрезок L*(рис.2.13).

Из предшествующих материалов (разделы 2.10 и 2.11) должно быть очевидным, что при использовании однородных координат и матрицы преобразования размером 3´3 комбинированные преобразования можно осуществлять, используя ранее изложенные подходы (раздел 2.7). Проецирование в однородных координатах также можно включать в комбинации преобразований. При этом, однако, следует иметь в виду, что в процессе каждого проецирования необходимо нормализовать получаемый результат. И как следствие этого: при расчете матрицы полного преобразования (композиции преобразований) матрица, реализующая проецирование, может стоять только на последнем месте.

2.13.  Общее масштабирование

На основании ранее изложенных материалов можно установить, что матрица преобразования вида при условии, что a = d, реализует пропорциональное (равномерное) локальное масштабирование (см. разделы 2.6 и 2.8); причем при a = d > 1 имеет место равномерное расширение, при 0 < a = d < 1 – равномерное сжатие.

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

,

где x¢ = x, y¢ = y, h = s; нормализуем полученный результат:

;

произошло пропорциональное масштабирование координат исходной точки: если s > 1 – равномерное сжатие, если 0 < s < 1 – равномерное растяжение.

Можно рассматривать общее масштабирование как частный случай проецирования в однородных координатах; геометрический смысл данного преобразования аналогичен рассмотренному в предыдущем разделе – это проецирование в трехмерном пространстве xyh точки c координатами (x, y, s), принадлежащей плоскости h = s, на плоскость h = 1 по лучу, соединяющему эту точку с началом координат.

В отличие от локального масштабирования (которое осуществляется коэффициентами a и d матрицы преобразования и может быть как пропорциональным, так и непропорциональным) масштабирование с использованием коэффициента s называют общим. Причем общее масштабирование всегда пропорционально (равномерно).

Очевидно, что результаты двух приведенных здесь возможных вариантов пропорционального масштабирования (локального и общего) будут идентичны при условии, что значение a = d (в первом варианте) будет равно (во втором варианте).

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

2.14.  Структура матрицы общего преобразования

Рассмотрев действие всех коэффициентов 3´3 матрицы общего преобразования, сделаем следующее заключение. Условно ее можно разбить на четыре части (подматрицы) –

;

коэффициенты каждой подматрицы связаны с преобразованиями определенного типа, а именно: коэффициенты левой верхней 2´2 подматрицы (a, b, c и d ) – с операциями локального масштабирования, сдвига, отражения и поворота, коэффициенты левой нижней 1´2 подматрицы (m и n) – с перемещениями вдоль координатных осей, коэффициенты правой верхней 2´1 подматрицы ( p и q) – с проецированием в однородных координатах, правая нижняя 1´1 подматрица (коэффициент s) – задает общее масштабирование.

2.15.  Точки бесконечности

В самом общем случае преобразование точки (x, y) в однородных координатах дает следующий промежуточный результат:

,

где , , .

Как отмечалось выше, если h ≠ 1, полученные однородные координаты нормализуются, т. е. все три их составляющие делятся на h. Вместе с тем, возможен особый случай – когда в результате преобразования получаем однородные координаты с h = 0. Нормализовать непосредственным образом такой результат не удается. Чтобы понять, что же в этом случае будет представлять собой окончательно преобразованная точка, рассмотрим следующий пример. Допустим, что матричные преобразования каких-либо точек приводят к однородным координатам с одинаковыми значениями x¢ (например, равными 4) и y¢ (например, равными 3), но с разными и уменьшающимися от раза к разу значениями h. Возможные результаты подобных преобразований приведены в левой части табл.2.1. В правой части табл.2.1 представлены окончательные результаты преобразований (т. е. x* и y*), Подпись:полученные путем нормализации однородных координат. Нетрудно заметить, что все преобразованные точки расположены на одном луче, идущем из начала координат и проходящем через точку (4, 3); кроме того, при уменьшении h координаты преобразованной точки изменяются обратно-пропорционально h, т. е. увеличиваются. Очевидно, что при стремлении h к нулю преобразованная точка стремится к бесконечности, причем в направлении, определяемом координатами x¢ и y¢. Другими словами, из приведенного примера следует, что однородные координаты отображают точку бесконечности, лежащую на луче, который идет из начала координат через точку (4, 3).

Отметим также, что точка бесконечности может быть не только результатом преобразования, но и исходной точкой преобразования (что используется, например, при перспективном проецировании, см. раздел 3.16). Применяя к ней преобразование общего вида, получаем

,

где ; при h ≠ 0 преобразованная точка (если h ≠ 1, то после нормализации) будет иметь конечные координаты.

Обобщая вышесказанное, сделаем следующий вывод: однородные координаты вида отображают точку бесконечности, которая принадлежит лучу, идущему из начала координат и проходящему через точку (x, y).

Приведем несколько характерных случаев расположения точек бесконечности:

§  однородные координаты вида отображают точку бесконечности, лежащую при условии, что x > 0, на положительной полуоси x, при условии, что x < 0 – на отрицательной;

§  однородные координаты вида соответствуют точке бесконечности, принадлежащей при y > 0 положительной полуоси y, при y < 0 – отрицательной;

§  однородные координаты вида при y = x отображают точку бесконечности, лежащую на прямой y = x, причем при x = y > 0 – в первом квадранте координатной плоскости xy, при x = y < 0 – в третьем ее квадранте;

§  однородные координаты вида при y = – x соответствуют точке бесконечности, расположенной на прямой y = – x, причем при x > 0, y < 0 – в четвертом квадранте координатной плоскости xy, при x < 0, y > 0 – во втором ее квадранте.