Под геометрическими примитивами понимают тот базовый набор геометрических фигур, который лежит в основе всех графических построений, причем эти фигуры должны образовывать "базис" в том смысле, что ни один из этих объектов нельзя построить через другие. Однако вопрос о том, что включать в набор геометрических примитивов, нельзя считать окончательно решенным в компьютерной графике. Например, количество примитивов можно свести к некоему минимуму, без которого нельзя обойтись, и этот минимум сводится к аппаратно реализованным графическим объектам. В этом случае базисный набор ограничивается отрезком, многоугольником и набором литер (символов).
Другая точка зрения состоит в том, что в набор примитивов необходимо включить гладкие кривые различного рода (окружности, эллипсы, кривые Безье), некоторые классы поверхностей и даже сплошные геометрические тела. В качестве трехмерных геометрических примитивов в таком случае предлагаются пространственные кривые, параллелепипеды, пирамиды, эллипсоиды. Но если такой расширенный набор примитивов связан с аппаратной реализацией, то возникает проблема перенесения программных приложений с одного компьютера на другой, поскольку такая аппаратная поддержка существует далеко не на всех графических станциях. Кроме того, при создании трехмерных геометрических примитивов программисты сталкиваются с проблемой их математического описания, а также разработки методов манипулирования такими объектами, поскольку те типы объектов, которые не попали в список базовых, надо уметь приближать с помощью этих примитивов.
Во многих случаях для аппроксимации сложных поверхностей используются многогранники, но форма граней может быть различной. Пространственный многоугольник с числом вершин больше трех не всегда бывает плоским, а в этом случае алгоритмы изображения многогранников могут привести к некорректному результату. Поэтому программист должен сам позаботиться о том, чтобы многогранник был описан правильно. В этом случае оптимальным выходом из положения является использование треугольников, поскольку треугольник всегда является плоским. В современной графике это, пожалуй, самый распространенный подход.
Но существует и альтернативное направление, которое называется конструктивной геометрией тел. В системах, использующих этот подход, объекты строятся из объемных примитивов с использованием теоретико- множественных операций (объединение, пересечение).
Любая графическая библиотека определяет свой набор примитивов. Так,
например, широко распространенная интерактивная система трехмерной
графики
Понятно, что для изображения таких примитивов должны быть разработаны эффективные и надежные алгоритмы, поскольку они являются конструктивными элементами. Исторически сложилось так, что первые дисплеи были векторными, поэтому базовым примитивом был отрезок. Но, как уже было отмечено в первой главе нашего курса, самая первая интерактивная программа Sketchpad А.Сазерленда в качестве одного из примитивов имела прямоугольник, после чего этот объект уже традиционно входил в различные графические библиотеки.
Здесь мы рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели.
Для этих пространственных моделей используются в качестве
примитивов вершины (точки в пространстве), отрезки прямых (векторы),
из которых строятся полилинии, полигоны и полигональные поверхности.
Главным элементом описания является вершина, все остальные являются
производными. В трехмерной декартовой системе координаты вершины
определяются своими координатами (x,y,z), линия задается двумя вершинами,
(рис 4.1) Полигональные моделиВ современной компьютерной графике векторно-полигональная модель является наиболее распространенной. Она применяется в системах автоматизированного проектирования, компьютерных играх, тренажерах, ГИС, САПР и т. д. Достоинства этой модели заключаются в следующем:
К числу недостатков полигональных моделей можно отнести то, что алгоритмы визуализации выполнения топологических операций (например, построение сечений) довольно сложны. Кроме того, аппроксимация плоскими гранями приводит к значительной погрешности, особенно при моделировании поверхностей сложной формы.
Воксельная модель - это представление объектов в виде трехмерного массива объемных (кубических) элементов. Само название "воксель" составлено из двух слов: volume element. Так же как и пиксель, воксель имеет свои атрибуты (цвет, прозрачность и т. п.). Полная прозрачность вокселя означает пустоту в соответствующей точке объема. Чем больше вокселей в определенном объеме и меньше их размер, тем точнее моделируются трехмерные объекты.
(рис 4.2) Воксельная модельПоложительными чертами воксельной модели являются:
К ее недостаткам относятся:
Характерной особенностью предлагаемого способа задания поверхностей является то, что основным примитивом здесь является поверхность второго порядка - квадрик. Он определяется с помощью вещественной непрерывной функции трех переменных $$(x,y,z)$$ в виде неравенства$$F(x,y,z)\ge 0.$$ Таким образом, квадрик есть замкнутое подмножество евклидова пространства, все точки которого удовлетворяют указанному неравенству. Уравнение$$F(x,y,z)=0$$ описывает границу этого множества. Множество точек, удовлетворяющих неравенству$$F(x,y,z)<0,$$ образует внешнюю область квадрика.
Свободная форма - это произвольная поверхность, обладающая свойствами гладкости, непрерывности и неразрывности. На базе квадриков строятся свободные формы, которые описывают функциональные модели. Свободная форма, построенная на этих принципах, имеет ряд достоинств, к которым, в первую очередь, надо отнести следующие:
Этот подход будет более подробно изложен в следующих главах.
В нашем курсе предполагается рассмотреть растровые алгоритмы для изображения таких геометрических примитивов, как отрезки, многоугольники, окружности и эллипсы. Но сначала мы займемся тем геометрическим аппаратом, который позволит адекватно описывать объекты в пространстве, работать с ними и формировать изображение.
Одной из распространенных задач компьютерной графики является
изображение двумерных графиков в некоторой системе координат. Эти
графики предназначены для отображения зависимости между переменными,
заданной с помощью функции. Например, во второй главе настоящего курса
приведен ряд графиков, характеризующих восприятие света глазом
человека. Чтобы получить такой график, прикладная программа должна
описать различные выходные примитивы (точки, линии,
Изображение трехмерных объектов сопряжено с целым рядом задач. Прежде всего надо помнить, что изображение является плоским, поэтому надо добиться адекватной передачи визуальных свойств предметов, дать достаточно наглядное представление о глубине. В дальнейшем группы трехмерных объектов, предназначенных для изображения, будем называть пространственной сценой, а ее двумерное изображение - образом.
(рис 4.3) Объектная система координат и система координат наблюдателяКак и в случае с двумерными объектами, первым шагом построения является ввод информации об объектах. Сцена занимает какое-то определенное место в пространстве, а ее описание привязывается к трехмерной декартовой системе координат, связанной с нею, - объектной координатной системе. Координаты объектов, составляющих сцену, определяются на основе их реальных размеров и взаимного расположения. В зависимости от точки, из которой рассматривается сцена, можно получить множество различных ее образов. Если построено достаточно много таких образов, то по ним можно восстановить объемную структуру предмета. Выбор точки и направления зрения тоже можно описать математически, введя декартову систему координат наблюдателя, начало которой находится в точке обзора, а одна из осей совпадает с направлением зрения (рис. 4.3). Переход от объектных координат к координатам наблюдателя математически реализуется так, как это было описано в третьей главе. На этом этапе преобразований сохраняются реальные размеры объектов.
Видимый образ формируется на некоторой плоскости, которую в дальнейшем будем называть картинной плоскостью. Способы преобразования трехмерного объекта в двумерный образ ( проекции ) могут быть различными. Так или иначе, но полученный образ также должен быть описан в некоторой двумерной системе координат. В зависимости от способа его получения реальные размеры образа также могут быть различны. Различные виды проецирования будут подробно рассмотрены в последующих главах.
(рис 4.4) Картинная плоскость и экранПоскольку нашей конечной целью является получение изображения на экране, то перенесение образа сопровождается изменением масштаба в соответствии с размерами экрана. Обычно началом координат в системе координат образа считается левый нижний угол листа с изображением. На экране дисплея начало координат традиционно находится в левом верхнем углу. Отображение рисунка с картинной плоскости на экран должно производиться с минимальным искажением пропорций, что само по себе вносит ограничение на область экрана, занимаемую рисунком. Изменение масштаба должно осуществляться с сохранением пропорций области (рис. 4.4).
Объекты в системе координат картинной плоскости задаются в каких- либо единицах измерения, причем масштаб одинаков по обеим осям координат. На экране единицей измерения является пиксель, который следует рассматривать как прямоугольный, поэтому масштабы по горизонтальной и вертикальной осям могут быть различны, что необходимо учитывать при задании коэффициентов масштабирования.
Рассмотрим ситуацию, когда изображение занимает на картинной плоскости прямоугольную область $$x_1\le x\lex_2, \; y_1\le y\le y_2$$. При отображении рисунка на экран каждая точка исходного прямоугольника с координатами $$(x,y)$$ перейдет в некоторую точку с целочисленными координатами $$(i,j)$$. Введем обозначения:$$\begin{gathered} \Delta x=x_2-x_1, \quad \Delta y=y_2-y_1, \quad \Delta i=i_2-i_1, \quad \Delta j=j_2-j_1, \\ S_x=\frac{\Delta i}{\Delta x}, \quad S_y=\frac{\Delta j}{\Delta y} \end{gathered}$$ (предполагается, что изображение займет на экране прямоугольник $$i_1\le i\le i_2, \; j_1\lej\le j_2$$ ). Определим преобразование координат образа $$(x,y)$$ в экранные координаты $$(i,j)$$ формулами$$i=i_1+S_x(x-x_1), \quad j=j_2-S_y(y-y_1).$$ Ясно, что при таком отображении прямоугольная область образа в точности перейдет в соответствующий экранный прямоугольник, как показано на рисунке. Теперь надо определить сам экранный прямоугольник так, чтобы его пропорции соответствовали прямоугольнику образа, т.е.$$\frac{\Delta x}{\Delta y}=\frac{\Delta i\cdot l_x}{\Delta j\cdot l_y}\equiv\kappa\frac{\Delta i}{\Delta j},$$ где $$l_x, l_y$$ - горизонтальный и вертикальный размер одного пикселя. Эти параметры легко установить, зная размеры экрана и разрешение. Отсюда получаем$$\Delta j=\kappa\cdot S_x\cdot\Delta y, \quad S_y=\kappa\cdot S_x$$ Теперь достаточно задать на экране начало отсчета и горизонтальный размер окна, а остальные параметры легко вычисляются.
В предыдущей главе описывались геометрические преобразования на плоскости и в пространстве, а также было показано, как можно использовать аппарат матриц для таких задач. Для преобразований на плоскости применялись двумерные векторы и матрицы размерностью $$2\times 2$$. В пространстве, соответственно, с этой же целью использовались трехмерные векторы и матрицы $$3\times 3$$. Но такой подход не позволяет задавать с помощью матриц преобразования переноса и проекции. В связи с этим в проективной геометрии был разработан аппарат, позволяющий унифицировать все геометрические преобразования путем введения так называемых однородных координат.
Для пояснения такого подхода сначала рассмотрим случай двумерного пространства. Каждая точка плоскости с координатами $$(x,y)$$ может одновременно рассматриваться как точка трехмерного пространства с координатами $$(x,y,1)$$, т.е. как точка, лежащая на плоскости $$z=1$$. С другой стороны, каждой точке трехмерного пространства $$(x,y,z)$$ при условии $$z\ne 0$$ соответствует единственная точка этой же плоскости $$\left( \frac{x}{z},\frac{y}{z},1 \right)$$. При этом получается, что каждой точке плоскости $$(x,y,1)$$ соответствует прямая, проходящая через начало координат, т. е. устанавливается взаимно однозначное соответствие между точками плоскости и множествами $$(tx,ty,t), \; -\infty<t<\infty, \;t\ne 0$$.
Если теперь рассматривать точку плоскости как принадлежащую трехмерному пространству, то ее двумерные преобразования можно будет описывать с помощью матриц $$3\times 3$$, причем можно будет задавать таким способом не только повороты и масштабирование, но и сдвиги и проекции (как ортографические, так и центральные).
Поворот на угол $$\alpha$$ относительно начала координат можно осуществить с
помощью новой матрицы поворота:$$\begin{pmatrix}
x' \\ y' \\ 1
\end{pmatrix}
=
\begin{pmatrix}
\cos\alpha -\sin\alpha 0 \\
\sin\alpha \cos\alpha 0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Операция масштабирования может быть записана в виде$$\begin{pmatrix}
ax \\ by \\ 1
\end{pmatrix}
=
\begin{pmatrix}
a 0 0 \\
0 b 0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Перенос на вектор $$(x_0,y_0)$$ также можно задать с помощью матрицы:$$\begin{pmatrix}
x+x_0 \\ y+y_0 \\ 1
\end{pmatrix}
=
\begin{pmatrix}
1 0 x_0 \\
0 1 y_0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Проекции точки на оси координат определяются с помощью
Перейдем теперь к трехмерному пространству. Каждой точке $$(x,y,z)$$ будем ставить в соответствие точку четырехмерного пространства $$(x,y,z,1)$$, а для выполнения основных преобразований будем использовать матрицы размерностью $$4\times 4$$. Строятся они совершенно аналогично тому, как это делалось в двумерном случае. Матрица сдвига на вектор $$(x_0,y_0,z_0)$$ имеет вид$$P= \begin{pmatrix} 1 0 0 x_0 \\ 0 1 0 y_0 \\ 0 0 1 z_0 \\ 0 0 0 1 \end{pmatrix},$$ матрица масштабирования тоже очевидным образом строится из трехмерной матрицы:$$S= \begin{pmatrix} a 0 0 0 \\ 0 b 0 0 \\ 0 0 c 0 \\ 0 0 0 1 \end{pmatrix}.$$ Проекции точек на координатные плоскости осуществляются с помощью матриц (более подробно проекции и их виды будут рассмотрены позднее):$$P_{xy}= \begin{pmatrix} 1 0 0 0 \\ 0 1 0 0 \\ 0 0 0 0 \\ 0 0 0 1 \end{pmatrix}, \quad P_{yz}= \begin{pmatrix} 0 0 0 0 \\ 0 1 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \end{pmatrix}, \quad P_{zx}= \begin{pmatrix} 1 0 0 0 \\ 0 0 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \end{pmatrix}.$$ Умножение этих матриц на вектор приводит к тому, что обнуляется одна из координат, и в результате получаем проекцию точки на соответствующую плоскость.
Матрица поворота относительно оси $$OX$$ на угол $$\alpha$$ выглядит следующим образом:$$R_x=
\begin{pmatrix}
1 0 0 0 \\
0 \cos\alpha -\sin\alpha 0 \\
0 \sin\alpha \cos\alpha 0 \\
0 0 0 1
\end{pmatrix}.$$
Отсюда легко понять, как строятся матрицы поворота относительно других
координатных осей, а также матрица поворота относительно произвольной
оси. Просто берем матрицы, построенные в третьей главе, и расширяем их
путем добавления уже известных
Путем объединения приведенных элементарных преобразований можно построить и более сложные. В третьей главе мы использовали произведение простых матриц вращения для построения матрицы поворота относительно произвольной оси. Приведем один пример.
Пусть в пространстве заданы два отрезка - $$\overline{AB}$$ и $$\overline{CD}$$. Будем строить матрицу преобразования, переводящую первый отрезок во второй. Это преобразование разложим на следующие элементарные действия.
Каждое из этих преобразований реализуется с помощью матрицы, а полное преобразование можно выполнить, используя произведение матриц.
Использование матриц очень удобно для выполнения преобразований в пространстве, хотя в некоторых случаях это приводит к избыточному числу выполняемых операций. Например, поворот одной точки в пространстве относительно координатной оси $$OZ$$ с помощью матриц в однородных координатах требует 16 операций умножения и 12 операций сложения. В то же время он легко может быть выполнен с помощью формул преобразования$$\begin{gathered} x'=x\cos\alpha-y\sin\alpha \\ y'=x\sin\alpha+y\cos\alpha \end{gathered},$$ т.е. с помощью всего лишь четырех умножений и одного сложения и одного вычитания. Операции сдвига также гораздо более экономично выполнять без использования матриц. Но когда речь идет о суперпозиции многих преобразований (как, например, в случае поворота относительно произвольной оси), то целесообразно применять соответствующую матрицу поворота. Эффективность матричного подхода очень сильно возрастает, если матричные операции реализованы аппаратно. Вопрос о том, в каких случаях использовать матрицы, а в каких нет, во многом зависит от возможностей вычислительной техники, уровня сложности задачи и требований к временным характеристикам процесса визуализации.
Под геометрическими примитивами понимают тот базовый набор геометрических фигур, который лежит в основе всех графических построений, причем эти фигуры должны образовывать "базис" в том смысле, что ни один из этих объектов нельзя построить через другие. Однако вопрос о том, что включать в набор геометрических примитивов, нельзя считать окончательно решенным в компьютерной графике. Например, количество примитивов можно свести к некоему минимуму, без которого нельзя обойтись, и этот минимум сводится к аппаратно реализованным графическим объектам. В этом случае базисный набор ограничивается отрезком, многоугольником и набором литер (символов).
Другая точка зрения состоит в том, что в набор примитивов необходимо включить гладкие кривые различного рода (окружности, эллипсы, кривые Безье), некоторые классы поверхностей и даже сплошные геометрические тела. В качестве трехмерных геометрических примитивов в таком случае предлагаются пространственные кривые, параллелепипеды, пирамиды, эллипсоиды. Но если такой расширенный набор примитивов связан с аппаратной реализацией, то возникает проблема перенесения программных приложений с одного компьютера на другой, поскольку такая аппаратная поддержка существует далеко не на всех графических станциях. Кроме того, при создании трехмерных геометрических примитивов программисты сталкиваются с проблемой их математического описания, а также разработки методов манипулирования такими объектами, поскольку те типы объектов, которые не попали в список базовых, надо уметь приближать с помощью этих примитивов.
Во многих случаях для аппроксимации сложных поверхностей используются многогранники, но форма граней может быть различной. Пространственный многоугольник с числом вершин больше трех не всегда бывает плоским, а в этом случае алгоритмы изображения многогранников могут привести к некорректному результату. Поэтому программист должен сам позаботиться о том, чтобы многогранник был описан правильно. В этом случае оптимальным выходом из положения является использование треугольников, поскольку треугольник всегда является плоским. В современной графике это, пожалуй, самый распространенный подход.
Но существует и альтернативное направление, которое называется конструктивной геометрией тел. В системах, использующих этот подход, объекты строятся из объемных примитивов с использованием теоретико- множественных операций (объединение, пересечение).
Любая графическая библиотека определяет свой набор примитивов. Так,
например, широко распространенная интерактивная система трехмерной
графики
Понятно, что для изображения таких примитивов должны быть разработаны эффективные и надежные алгоритмы, поскольку они являются конструктивными элементами. Исторически сложилось так, что первые дисплеи были векторными, поэтому базовым примитивом был отрезок. Но, как уже было отмечено в первой главе нашего курса, самая первая интерактивная программа Sketchpad А.Сазерленда в качестве одного из примитивов имела прямоугольник, после чего этот объект уже традиционно входил в различные графические библиотеки.
Здесь мы рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели.
Для этих пространственных моделей используются в качестве
примитивов вершины (точки в пространстве), отрезки прямых (векторы),
из которых строятся полилинии, полигоны и полигональные поверхности.
Главным элементом описания является вершина, все остальные являются
производными. В трехмерной декартовой системе координаты вершины
определяются своими координатами (x,y,z), линия задается двумя вершинами,
(рис 4.1) Полигональные моделиВ современной компьютерной графике векторно-полигональная модель является наиболее распространенной. Она применяется в системах автоматизированного проектирования, компьютерных играх, тренажерах, ГИС, САПР и т. д. Достоинства этой модели заключаются в следующем:
К числу недостатков полигональных моделей можно отнести то, что алгоритмы визуализации выполнения топологических операций (например, построение сечений) довольно сложны. Кроме того, аппроксимация плоскими гранями приводит к значительной погрешности, особенно при моделировании поверхностей сложной формы.
Воксельная модель - это представление объектов в виде трехмерного массива объемных (кубических) элементов. Само название "воксель" составлено из двух слов: volume element. Так же как и пиксель, воксель имеет свои атрибуты (цвет, прозрачность и т. п.). Полная прозрачность вокселя означает пустоту в соответствующей точке объема. Чем больше вокселей в определенном объеме и меньше их размер, тем точнее моделируются трехмерные объекты.
(рис 4.2) Воксельная модельПоложительными чертами воксельной модели являются:
К ее недостаткам относятся:
Характерной особенностью предлагаемого способа задания поверхностей является то, что основным примитивом здесь является поверхность второго порядка - квадрик. Он определяется с помощью вещественной непрерывной функции трех переменных $$(x,y,z)$$ в виде неравенства$$F(x,y,z)\ge 0.$$ Таким образом, квадрик есть замкнутое подмножество евклидова пространства, все точки которого удовлетворяют указанному неравенству. Уравнение$$F(x,y,z)=0$$ описывает границу этого множества. Множество точек, удовлетворяющих неравенству$$F(x,y,z)<0,$$ образует внешнюю область квадрика.
Свободная форма - это произвольная поверхность, обладающая свойствами гладкости, непрерывности и неразрывности. На базе квадриков строятся свободные формы, которые описывают функциональные модели. Свободная форма, построенная на этих принципах, имеет ряд достоинств, к которым, в первую очередь, надо отнести следующие:
Этот подход будет более подробно изложен в следующих главах.
В нашем курсе предполагается рассмотреть растровые алгоритмы для изображения таких геометрических примитивов, как отрезки, многоугольники, окружности и эллипсы. Но сначала мы займемся тем геометрическим аппаратом, который позволит адекватно описывать объекты в пространстве, работать с ними и формировать изображение.
Одной из распространенных задач компьютерной графики является
изображение двумерных графиков в некоторой системе координат. Эти
графики предназначены для отображения зависимости между переменными,
заданной с помощью функции. Например, во второй главе настоящего курса
приведен ряд графиков, характеризующих восприятие света глазом
человека. Чтобы получить такой график, прикладная программа должна
описать различные выходные примитивы (точки, линии,
Изображение трехмерных объектов сопряжено с целым рядом задач. Прежде всего надо помнить, что изображение является плоским, поэтому надо добиться адекватной передачи визуальных свойств предметов, дать достаточно наглядное представление о глубине. В дальнейшем группы трехмерных объектов, предназначенных для изображения, будем называть пространственной сценой, а ее двумерное изображение - образом.
(рис 4.3) Объектная система координат и система координат наблюдателяКак и в случае с двумерными объектами, первым шагом построения является ввод информации об объектах. Сцена занимает какое-то определенное место в пространстве, а ее описание привязывается к трехмерной декартовой системе координат, связанной с нею, - объектной координатной системе. Координаты объектов, составляющих сцену, определяются на основе их реальных размеров и взаимного расположения. В зависимости от точки, из которой рассматривается сцена, можно получить множество различных ее образов. Если построено достаточно много таких образов, то по ним можно восстановить объемную структуру предмета. Выбор точки и направления зрения тоже можно описать математически, введя декартову систему координат наблюдателя, начало которой находится в точке обзора, а одна из осей совпадает с направлением зрения (рис. 4.3). Переход от объектных координат к координатам наблюдателя математически реализуется так, как это было описано в третьей главе. На этом этапе преобразований сохраняются реальные размеры объектов.
Видимый образ формируется на некоторой плоскости, которую в дальнейшем будем называть картинной плоскостью. Способы преобразования трехмерного объекта в двумерный образ ( проекции ) могут быть различными. Так или иначе, но полученный образ также должен быть описан в некоторой двумерной системе координат. В зависимости от способа его получения реальные размеры образа также могут быть различны. Различные виды проецирования будут подробно рассмотрены в последующих главах.
(рис 4.4) Картинная плоскость и экранПоскольку нашей конечной целью является получение изображения на экране, то перенесение образа сопровождается изменением масштаба в соответствии с размерами экрана. Обычно началом координат в системе координат образа считается левый нижний угол листа с изображением. На экране дисплея начало координат традиционно находится в левом верхнем углу. Отображение рисунка с картинной плоскости на экран должно производиться с минимальным искажением пропорций, что само по себе вносит ограничение на область экрана, занимаемую рисунком. Изменение масштаба должно осуществляться с сохранением пропорций области (рис. 4.4).
Объекты в системе координат картинной плоскости задаются в каких- либо единицах измерения, причем масштаб одинаков по обеим осям координат. На экране единицей измерения является пиксель, который следует рассматривать как прямоугольный, поэтому масштабы по горизонтальной и вертикальной осям могут быть различны, что необходимо учитывать при задании коэффициентов масштабирования.
Рассмотрим ситуацию, когда изображение занимает на картинной плоскости прямоугольную область $$x_1\le x\lex_2, \; y_1\le y\le y_2$$. При отображении рисунка на экран каждая точка исходного прямоугольника с координатами $$(x,y)$$ перейдет в некоторую точку с целочисленными координатами $$(i,j)$$. Введем обозначения:$$\begin{gathered} \Delta x=x_2-x_1, \quad \Delta y=y_2-y_1, \quad \Delta i=i_2-i_1, \quad \Delta j=j_2-j_1, \\ S_x=\frac{\Delta i}{\Delta x}, \quad S_y=\frac{\Delta j}{\Delta y} \end{gathered}$$ (предполагается, что изображение займет на экране прямоугольник $$i_1\le i\le i_2, \; j_1\lej\le j_2$$ ). Определим преобразование координат образа $$(x,y)$$ в экранные координаты $$(i,j)$$ формулами$$i=i_1+S_x(x-x_1), \quad j=j_2-S_y(y-y_1).$$ Ясно, что при таком отображении прямоугольная область образа в точности перейдет в соответствующий экранный прямоугольник, как показано на рисунке. Теперь надо определить сам экранный прямоугольник так, чтобы его пропорции соответствовали прямоугольнику образа, т.е.$$\frac{\Delta x}{\Delta y}=\frac{\Delta i\cdot l_x}{\Delta j\cdot l_y}\equiv\kappa\frac{\Delta i}{\Delta j},$$ где $$l_x, l_y$$ - горизонтальный и вертикальный размер одного пикселя. Эти параметры легко установить, зная размеры экрана и разрешение. Отсюда получаем$$\Delta j=\kappa\cdot S_x\cdot\Delta y, \quad S_y=\kappa\cdot S_x$$ Теперь достаточно задать на экране начало отсчета и горизонтальный размер окна, а остальные параметры легко вычисляются.
В предыдущей главе описывались геометрические преобразования на плоскости и в пространстве, а также было показано, как можно использовать аппарат матриц для таких задач. Для преобразований на плоскости применялись двумерные векторы и матрицы размерностью $$2\times 2$$. В пространстве, соответственно, с этой же целью использовались трехмерные векторы и матрицы $$3\times 3$$. Но такой подход не позволяет задавать с помощью матриц преобразования переноса и проекции. В связи с этим в проективной геометрии был разработан аппарат, позволяющий унифицировать все геометрические преобразования путем введения так называемых однородных координат.
Для пояснения такого подхода сначала рассмотрим случай двумерного пространства. Каждая точка плоскости с координатами $$(x,y)$$ может одновременно рассматриваться как точка трехмерного пространства с координатами $$(x,y,1)$$, т.е. как точка, лежащая на плоскости $$z=1$$. С другой стороны, каждой точке трехмерного пространства $$(x,y,z)$$ при условии $$z\ne 0$$ соответствует единственная точка этой же плоскости $$\left( \frac{x}{z},\frac{y}{z},1 \right)$$. При этом получается, что каждой точке плоскости $$(x,y,1)$$ соответствует прямая, проходящая через начало координат, т. е. устанавливается взаимно однозначное соответствие между точками плоскости и множествами $$(tx,ty,t), \; -\infty<t<\infty, \;t\ne 0$$.
Если теперь рассматривать точку плоскости как принадлежащую трехмерному пространству, то ее двумерные преобразования можно будет описывать с помощью матриц $$3\times 3$$, причем можно будет задавать таким способом не только повороты и масштабирование, но и сдвиги и проекции (как ортографические, так и центральные).
Поворот на угол $$\alpha$$ относительно начала координат можно осуществить с
помощью новой матрицы поворота:$$\begin{pmatrix}
x' \\ y' \\ 1
\end{pmatrix}
=
\begin{pmatrix}
\cos\alpha -\sin\alpha 0 \\
\sin\alpha \cos\alpha 0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Операция масштабирования может быть записана в виде$$\begin{pmatrix}
ax \\ by \\ 1
\end{pmatrix}
=
\begin{pmatrix}
a 0 0 \\
0 b 0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Перенос на вектор $$(x_0,y_0)$$ также можно задать с помощью матрицы:$$\begin{pmatrix}
x+x_0 \\ y+y_0 \\ 1
\end{pmatrix}
=
\begin{pmatrix}
1 0 x_0 \\
0 1 y_0 \\
0 0 1
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ 1
\end{pmatrix}.$$
Проекции точки на оси координат определяются с помощью
Перейдем теперь к трехмерному пространству. Каждой точке $$(x,y,z)$$ будем ставить в соответствие точку четырехмерного пространства $$(x,y,z,1)$$, а для выполнения основных преобразований будем использовать матрицы размерностью $$4\times 4$$. Строятся они совершенно аналогично тому, как это делалось в двумерном случае. Матрица сдвига на вектор $$(x_0,y_0,z_0)$$ имеет вид$$P= \begin{pmatrix} 1 0 0 x_0 \\ 0 1 0 y_0 \\ 0 0 1 z_0 \\ 0 0 0 1 \end{pmatrix},$$ матрица масштабирования тоже очевидным образом строится из трехмерной матрицы:$$S= \begin{pmatrix} a 0 0 0 \\ 0 b 0 0 \\ 0 0 c 0 \\ 0 0 0 1 \end{pmatrix}.$$ Проекции точек на координатные плоскости осуществляются с помощью матриц (более подробно проекции и их виды будут рассмотрены позднее):$$P_{xy}= \begin{pmatrix} 1 0 0 0 \\ 0 1 0 0 \\ 0 0 0 0 \\ 0 0 0 1 \end{pmatrix}, \quad P_{yz}= \begin{pmatrix} 0 0 0 0 \\ 0 1 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \end{pmatrix}, \quad P_{zx}= \begin{pmatrix} 1 0 0 0 \\ 0 0 0 0 \\ 0 0 1 0 \\ 0 0 0 1 \end{pmatrix}.$$ Умножение этих матриц на вектор приводит к тому, что обнуляется одна из координат, и в результате получаем проекцию точки на соответствующую плоскость.
Матрица поворота относительно оси $$OX$$ на угол $$\alpha$$ выглядит следующим образом:$$R_x=
\begin{pmatrix}
1 0 0 0 \\
0 \cos\alpha -\sin\alpha 0 \\
0 \sin\alpha \cos\alpha 0 \\
0 0 0 1
\end{pmatrix}.$$
Отсюда легко понять, как строятся матрицы поворота относительно других
координатных осей, а также матрица поворота относительно произвольной
оси. Просто берем матрицы, построенные в третьей главе, и расширяем их
путем добавления уже известных
Путем объединения приведенных элементарных преобразований можно построить и более сложные. В третьей главе мы использовали произведение простых матриц вращения для построения матрицы поворота относительно произвольной оси. Приведем один пример.
Пусть в пространстве заданы два отрезка - $$\overline{AB}$$ и $$\overline{CD}$$. Будем строить матрицу преобразования, переводящую первый отрезок во второй. Это преобразование разложим на следующие элементарные действия.
Каждое из этих преобразований реализуется с помощью матрицы, а полное преобразование можно выполнить, используя произведение матриц.
Использование матриц очень удобно для выполнения преобразований в пространстве, хотя в некоторых случаях это приводит к избыточному числу выполняемых операций. Например, поворот одной точки в пространстве относительно координатной оси $$OZ$$ с помощью матриц в однородных координатах требует 16 операций умножения и 12 операций сложения. В то же время он легко может быть выполнен с помощью формул преобразования$$\begin{gathered} x'=x\cos\alpha-y\sin\alpha \\ y'=x\sin\alpha+y\cos\alpha \end{gathered},$$ т.е. с помощью всего лишь четырех умножений и одного сложения и одного вычитания. Операции сдвига также гораздо более экономично выполнять без использования матриц. Но когда речь идет о суперпозиции многих преобразований (как, например, в случае поворота относительно произвольной оси), то целесообразно применять соответствующую матрицу поворота. Эффективность матричного подхода очень сильно возрастает, если матричные операции реализованы аппаратно. Вопрос о том, в каких случаях использовать матрицы, а в каких нет, во многом зависит от возможностей вычислительной техники, уровня сложности задачи и требований к временным характеристикам процесса визуализации.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.