- •1. Многоугольники. Свойства выпуклых многоугольников. Принадлежность точки многоугольнику.
- •2. Растровый и векторный способы представления изображений. Достоинства и недостатки.
- •4. Краткая характеристика классов .Net Framework реализующих основные графические объекты Windows.
- •5. Методы изображения точек, прямых и ломаных.
- •7. Методы изображения эллипсов, дуг, сегментов и секторов эллипсов.
- •8. Аффинные преобразования. Структура матрицы преобразования однородных координат для физического трёхмерного пространства.
- •9. Основные виды проекций.
- •10. Ортографическая проекция. Основные свойства. Матрица переходов.
- •14. Представление пространственных форм с помощью твёрдотельного моделирования. Достоинства и недостатки.
- •15. Представление пространственных форм с помощью поверхностного моделирования. Достоинства и недостатки.
- •16. Способы проверки видимости граней и рёбер выпуклого многогранника.
- •17. Удаление невидимых граней линий и граней. Метод трассировки лучей. Идея метода. Достоинства и недостатки.
- •18. Удаление невидимых линий и граней. Метод z-буфера. Идея метода. Достоинства и недостатки.
- •19. Цветовые координаты rgb и cmy (cmyk)
- •20.Цветовое разрешение. Представление цвета в системах программирования для Windows.
- •21. Цветовые координаты hsv и hls.
- •22. Свойства цветового графика мко.
- •23. Рассеянный свет. Свойства диффузного и зеркального отражения света. Простая модель освещения.
- •24. Вычисление освещённости. Простая модель освещения. Идея метода. Достоинства и недостатки.
- •25. Вычисление освещённости. Модель Гуро. Идея метода. Достоинства и недостатки.
- •26. Вычисление освещённости. Модель Фонга. Идея метода. Достоинства и недостатки.
- •27. Вычисление освещённости. Обратная трассировка лучей. Идея метода. Достоинства и недостатки.
- •28. Вычисление освещённости. Метод излучательности. Идея метода. Достоинства и недостатки.
- •29. Кусочное представление кривых кубическими сегментами. Идея метода. Достоинства и недостатки.
- •30. Кривые Безье.
- •31. Поверхности Безье.
- •32. Билинейная поверхность
- •33.Линейчатая и бикубическая поверхности Кунса.
7. Методы изображения эллипсов, дуг, сегментов и секторов эллипсов.
Эллипс
Метод DrawEllipse рисует эллипс, вписанный в прямоугольную область, главные оси которой параллельны осям мировой системы координат, расположение и размеры которой передаются ему в качестве параметров.
Предусмотрено четыре перегруженных варианта метода DrawEllipse:
public void DrawEllipse(Pen, Rectangle); public void DrawEllipse(Pen, RectangleF); public void DrawEllipse(Pen, int, int, int, int); public void DrawEllipse(Pen, float, float, float, float);
Как видите, эти методы отличаются только способом, при помощи которого описывается расположение и размеры прямоугольной области, в которую вписан эллипс. Вы можете задавать расположение и размеры этой области в виде рассмотренных ранее объектов класса Rectangle, RectangleF, а также в виде целых чисел или числе с плавающей десятичной точкой.
Сегмент эллипса
При помощи метода DrawArc программа может нарисовать сегмент эллипса. Сегмент задается при помощи координат прямоугольной области, в которую вписан эллипс, а также двух углов, отсчитываемых в направлении против часовой стрелки. Первый угол Angle1 задает расположение одного конца сегмента, а второй Angle2 — расположение другого конца сегмента.
Предусмотрено четыре перегруженных варианта метода DrawArc:
public void DrawArc(Pen, Rectangle, float, float); public void DrawArc(Pen, RectangleF, float, float); public void DrawArc(Pen, int, int, int, int, int, int); public void DrawArc(Pen, float, float, float, float, float, float);
Первый параметр метода DrawArc определяет перо, с помощью которой будет нарисован сегмент. Последние два параметра задают углы Angle1 и Angle2. Расположение и размеры прямоугольной области передаются методу DrawArc аналогично тому, как это делается для рассмотренного выше метода DrawEllipse.
Для рисования сегмента эллипса мы создали приложение DrawArcApp. Вся работа по рисованию выполняется внутри обработчика события Form1_Paint:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Pen myPen = new Pen(Color.Black, 2); Graphics g=e.Graphics; g.Clear(Color.White); g.DrawArc(myPen, 10, 10, 200, 150, 30, 270); }
Здесь мы использовали вариант метода DrawArc, допускающий указание расположения и размеров прямоугольной области, а также углов в виде целых чисел.
8. Аффинные преобразования. Структура матрицы преобразования однородных координат для физического трёхмерного пространства.
Аффинные преобразования ( от лат. affinis – родственный) представляют собой точечные взаимно однозначные отображения пространства ( плоскости ) на себя, при которых прямые переходят в прямые.
Произвольное аффинное преобразование задается матричной формулой M'=M*P+D (2.1)
Из (2.1) следует, что суперпозиция аффинных преобразований эквивалентна вычислению матричных выражений в соответствии с правилами линейной алгебры.
Обычно выделяют три основных вида аффинных преобразований: перенос, поворот и масштабирование.
Перенос переводит точку M(x,y,z)T в точку M'(x' = x+x, y' = y+y, z' = z+z) T.
Уравнение переноса в матричной форме:
(2.2)
Рассмотрим сначала плоский случай поворота относительно начала координат.
Осуществим поворот вокруг точки начала координат на произвольный угол . Рассмотрим радиус-вектор точки M). Обозначим r— длину вектора, а —угол между вектором и осью х. Радиус-вектор поворачивается вокруг начала координат на угол и попадает в точку M'. Записав векторы для M и M', получаем:
M = (x,y)= (r cos , r sin ) и M' = (x',y')= (r cos (+) , r sin (+))
Используя формулу для cos суммы углов, перепишем выражение для M' следующим образом
M' = (х', у') = (r(cos cos - sin sin ), r(cos sin + sin cos )) . Используя определения х и у, можно переписать M' как
M' = (x', y') = (x cos-y sin, x sin +y cos ) . Таким образом, преобразованная точка имеет координаты
х' = х cos -у sin у' = х sin + у cos .
и
ли
в матричном виде
Д
ля
применения обратного пребразования
найдем матрицу поворота на -.
Эту же матрицу можно получить из общих соображений как обратную к P.
В данном случае матрица ортогональная (det(P) = 1) => P-1=PT
Таким образом, поворот против часовой стрелки на заданный угол вокруг оси аппликат OZ переводит точку M(x,y,z) в точку M'(x', y', z') в соответствии со следующими уравнениями ( в координатной и матричной формах ):
x' = x*cos - y*sin , y' = x*sin + y*cos ; z' = z,
Поворот против часовой стрелки на заданный угол вокруг оси абсцисс OX переводит точку M(x,y,z) в точку M'(x', y', z') в соответствии со следующими уравнениями ( в координатной и матричной формах ):
x' = x, y' = y*cos - z*sin , z' = y*sin + z*cos ; (2.3)
(2.4)
Поворот против часовой стрелки вокруг оси ординат OY задается следующим образом:
x' = x*cos + z*sin , y' = y, z' = -x*sin + z*cos ; (2.5)
Рис 2.1. Повороты точки вокруг координатных осей (по [2]).
Нетрудно заметить, что при преобразованиях поворота и переноса длины отрезков и углы между ними не изменяются.
Масштабирование изображения вдоль осей OX, OY, OZ задается формулами
x' = sx*x; y' = sy*y, z' = sz*z, (2.9)
где sx,sy,sz 0 – коэффициенты масштабирования изображения вдоль соответствующей оси. Матричная запись (2.9):
(2.10)
Если абсолютное значение коэффициента масштабирования вдоль какой-либо оси больше 1, имеет место растяжение изображения вдоль данной оси, если меньше 1 – сжатие. Отрицательное значение коэффициента масштабирования вдоль оси означает зеркальное отражение точки относительно координатной плоскости, перпендикулярной данной оси. На рис. 2.2 правая сцена получена из левой сжатием по оси OX и растяжением по осям OY и OZ
Произвольное аффинное преобразование всегда может быть сведено к выполнению преобразований переноса, поворота и масштабирования в некотором порядке. Это позволяет использовать приведенные выше стандартные формулы для вычисления более сложных аффинных преобразований.
Рассмотрим сначала общее аффинное преобразование на плоскости, переводящее М(x;y) в М’(x’;y’)
x’ = ax+by+n y’ = cx+dy+m (1)
Легко видеть, что его нельзя описать одной матрицей 2-го порядка. Это можно сделать матрицей 3-го порядка, введя т.н. однородные координаты. Однородные координаты точки на плоскости (x,y) представляют собой тройку (x*, y*, h), такую что x*=hx, y* = hy, h – некоторое число, отличное от нуля (h=0 – особый случай). Очевидeн переход от однородных координат к обычным: x = x*/h; y = y*/h.Таким образом, одной точке на плоскости соответствует бесконечно много троек однородных координат. Например, тройки (2; 4;1), (-4;-8;-2), (1;2; 0,5) представляют одну и ту же двумерную точку (2;4). Заметим, что при h = 1 x* = x, y* = y. Множество таких троек часто называют физической плоскостью однородных координат.
Матрица преобразования для однородных координат имеет размер (3х3).
Матрица поворота
имеет вид Р1
=
Матрица масштабирования
имеет вид Р2
=
Матрица переноса
имеет вид Р3
=
При этом композиция переносов, масштабирований и поворотов сводится к перемножению матриц.
Преобразование (1)
запишется в виде M’
= MP, где
P
=
Четырехмерные однородные координаты трехмерного физического пространства вводятся аналогично.
