zabika.ru 1




Лекция 2
Вычерчивание кривых линий и графиков функций, задаваемых уравнениями в явном виде
Автоматическое получение графиков функций было едва ли не первым практическим применением машинной графики.

Графики функций обычно представляют собой кривые линии. Поставим обратный вопрос: всякая ли кривая линия будет графиком некоторой функции. Стоит ли считать функцией окружность, если это контур детали или граница отверстия.

Функции обычно рассматривают однозначные, т.е. такие когда одному значению аргумента соответствует одно значение функции. Но этим свойством не обладает даже окружность. С другой стороны, и окружность и различные другие линии имеют свое аналитическое выражение, их уравнения записываются в различных формах.

Нетрудно записать эти уравнения в явном виде, например, окружность, разрешив его относительно любой из координат

, - центр, - радиус.

Если линии строятся с помощью явного уравнения, координате аргументу придают постепенно увеличивающееся или уменьшающееся значение и всякий раз подсчитывают значение координаты-функции. Найденные точки соединяют отрезками.

В качестве исходных данных для получения конкретной дуги линии определенного типа задается аналитическая модель. В ее составе – начальное и конечное значение координаты-аргумента, шаг – всегда положительное значение.

Возьмем, например, уравнение синусоиды. Но не простейшем виде, а с линейными преобразованиями аргумента и функции, чтобы линию можно было чертить различными способами (высота, масштаб).

Здесь , - координаты нулевой точки, - амплитуда, - длина волны.

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

В основе этих действий лежит концепция «вычисляй и сразу выдавай». Вычисленная точка сразу выводится на экран монитора или на печать.

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

Уравнение, которое было приведено в качестве примера, записано в явном виде. Однако в двумерном пространстве линии могут быть заданы параметрически – двумя уравнениями, явно выражающими обе координаты через значение некоторого параметра
,

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

Чтобы параметрическое представление линии не показалось слишком сложным, линия может быть задана, например, двумя не явными уравнениями, содержащими (каждое) две координаты и параметр.

,

.
Запрограммировать вычерчивание параметрической линии не сложно, например, эллипс. Его параметрические уравнения:

, .


Таким образом, мы рассмотрели вычерчивание кривых линий и графиков функций, задаваемых уравнениями в явном и неявном виде при работе с растровой графикой.
Основы графического представления информации при работе с векторной графикой.
Двумерное пространство
Вычисление в плоскости не представляет труда и основаны на понятиях планиметрии и аналитической геометрии.
Основные операции


  1. Преобразование координат пространства в координаты экрана дисплея.

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

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

2. Поиск пересечений
Окно пользователя определяется координатами нижнего левого

И верхнего правого углов, окно экрана – аналогично , .

Из очевидных соотношений
, ,

можно получить выражение для связи координат

, ,
,

Поиск пересечений


Пересечения плоских объектов находятся с помощью правил аналитической геометрии на плоскости. Рассмотрим в качестве примера пересечение двух прямых, заданных уравнениями:
,
.
Очевидно, надо решить простую систему из двух уравнений с двумя неизвестными. Сначала вычислим определитель:
.
Если , прямые считаются параллельными (- очень малая величина), в противном случае координаты точки пересечения определяются выражениями:



.

Пересечение окружности с известными координатами центра (, ), радиусом и прямой . Запишем уравнения окружности и прямой в виде


,
.

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

,

.
Тогда для двух решений имеем:


Пересечение двух окружностей заданных координатами центров (, ) и (, ) и радиусами и . Сначала необходимо проверить, что окружности не являются концентрическими (т.е. расстояние между их центрами больше ). После этого находим выражение для радикальной оси (радикальная ось двух окружностей представляет собой геометрическое место точек, из которых можно провести касательные одинаковой длины к этим окружностям) окружностей и задача сводится к предыдущему случаю: отыскание точек пересечения (если они существуют) радикальной оси и одной из окружностей.



Вычисление периметров и площадей


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

,
.

Замечание Приведенные формулы применимы только к многоугольникам.

Геометрические преобразования на плоскости


Геометрические преобразования используются для перемещения и модификации объектов. Преобразования представлены в матричном виде с использованием приведенных выше сведений об однородных координатах. Последние необходимы еще и потому, что без них трудно обойтись при описании преобразования переноса,

Геометрическое преобразование, примененное к объекту или сово­купности объектов, может быть композицией (последовательностью) нескольких преобразований. Для его описания будем использовать матрицу, представляющую собой произведение матриц более простых преобразований (что является следствием ассоциативности матричного умножения).

Основные преобразования следующие:

  • преобразование переноса на вектор Т;
  • преобразование поворота относительно начала координат на угол а;


  • преобразование масштаба на вектор Е (умножение координат объекта
    на координаты вектора Е).

Рассмотрим математические выражения для основных преобразова­ний (исходный объект - вектор - преобразуется в вектор

• Преобразование переноса на вектор :



при этом

,
Легко показать, что в однородных координатах матрица, описывающая это преобразование, имеет вид

,

а преобразование вектора в вектор можно записать в виде

.

• Преобразование поворота относительно начала координат на угол а. Координаты преобразуются по следующему правилу:

Отсюда легко получается матрица преобразования:
.
Матричная запись преобразования:
.

• Преобразование масштаба на вектор . Правило преобразования координат:

, .
Матрица преобразования:
.
Матричная запись преобразования:
.
Цепочка преобразований

Более сложные преобразования можно определить как цепочку ос­новных преобразований, примененных последовательно. Матрицу слож­ного преобразования будем искать в виде произведения матриц преобра­зований, составляющих цепочку.

Предположим, что к объекту применяется преобразование переноса на вектор , а затем преобразование попорота относительно начала координат на угол а. Выполним сначала перенос, обозначив результат через :
.
Затем выполним поворот, обозначив результат через :
.
Окончательно получаем
.
Воспользуемся свойствами ассоциативности матричного умножения и выполним сначала умножение матриц и . Результат будет представлять собой матрицу полного преобразования:

.

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

Пример 1. Определить матрицу преобразования, соответствующего повороту на угол относительно .

Для решения этой задачи сначала отметим, что такое преобразование можно осуществить в три этапа:


  1. преобразование переноса на для того, чтобы совместить центр поворота с началом координат (так как нам известна матрица преобразования поворота только относительно начала координат);

  2. преобразование поворота на угол относительно начала координат;

  3. преобразование переноса на для возврата центра поворота в прежнее положение.

Полное преобразование будет иметь вид:



.
Пример 2. Определить матрицу, соответствующую преобразованию объекта с центром в точке и масштабом .

Для решения этой задачи преобразование можно осуществить в три этапа:
  1. преобразование переноса на ;


  2. преобразование масштаба на вектор ;

  3. преобразование переноса на .

Матрица преобразования имеет вид: