Студопедия — Методы изображения эллипсов, дуг, сегментов и секторов эллипсов.
Студопедия Главная Случайная страница Обратная связь

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

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






Эллипс

Метод 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; просмотров: 617. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

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

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

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

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

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

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

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