Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Методы изображения эллипсов, дуг, сегментов и секторов эллипсов.





Эллипс

Метод 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+Dx, y' = y+Dy, z' = z+Dz) T.

Уравнение переноса в матричной форме:

 

 

(2.2)

Рассмотрим сначала плоский случай поворота относительно начала координат.

Осуществим поворот вокруг точки начала координат на произвольный угол j. Рассмотрим радиус-вектор точки M). Обозначим r— длину вектора, а q —угол между вектором и осью х. Радиус-вектор поворачивается вокруг начала координат на угол j и попадает в точку M'. Записав векторы для M и M', получаем:

M = (x,y)= (r cos q, r sin q) и M' = (x',y')= (r cos (q+j), r sin (q+j))

Используя формулу для cos суммы углов, перепишем выражение для M' следующим образом

M' = (х', у') = (r(cos q cos j - sin q sin j), r(cos q sin j + sin q cos j)). Используя определения х и у, можно переписать M ' как

M' = (x', y') = (x cosj-y sinj, x sinj +y cosj). Таким образом, преобразованная точка имеет координаты

х' = х cos j sin j у' = х sin j + у cos j.

или в матричном виде

Для применения обратного пребразования найдем матрицу поворота на -j.

 

Эту же матрицу можно получить из общих соображений как обратную к P.

В данном случае матрица ортогональная (det(P) = 1) => P-1=PT

Таким образом, поворот против часовой стрелки на заданный угол j вокруг оси аппликат OZ переводит точку M(x,y,z) в точку M'(x', y', z') в соответствии со следующими уравнениями (в координатной и матричной формах):

x' = x*cos j - y*sin j, y' = x*sin j + y*cos j; z' = z,

 

Поворот против часовой стрелки на заданный угол j вокруг оси абсцисс OX переводит точку M(x,y,z) в точку M'(x', y', z') в соответствии со следующими уравнениями (в координатной и матричной формах):

x' = x, y' = y*cos j - z*sin j, z' = y*sin j + z*cos j; (2.3)

(2.4)

Поворот против часовой стрелки вокруг оси ординат OY задается следующим образом:

x' = x*cos j + z*sin j, y' = y, z' = -x*sin j + z*cos j; (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 =

Четырехмерные однородные координаты трехмерного физического пространства вводятся аналогично.








Дата добавления: 2015-10-12; просмотров: 656. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

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

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

Studopedia.info - Студопедия - 2014-2025 год . (0.012 сек.) русская версия | украинская версия