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

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

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






Эллипс

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



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

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

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

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

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

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

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