Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_В_Г1_3_37.doc
Скачиваний:
4
Добавлен:
24.04.2019
Размер:
1.33 Mб
Скачать

1.8. Аналитические способы задания пространственных тел

Сложные пространственные тела обычно формируют из более простых – примитивов. Для аналитического зада-ния пространственных примитивов , как правило, ис-пользуют параметрические способы. Поскольку такие примитивы являются трёхмерными объектами (3d-объек-тами), то у них необходимо задавать области изменения трёх независимых параметров.

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

1.9. Основные операции с графическими примитивами

1. Определение пересечения (параллельности, наложения) плоских прямых (лучей, отрезков).

Заданы две плоские прямые , :

; .

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

Условие пересечения имеет вид , где - значения параметров u, v в точке пересечения. Перейдя к единичным направляющим векторам и новым параметрам ; , условие представим в виде:

где .

Для упрощения анализа рассматриваем также матрицу .

Возможны следующие случаи:

  1. det . При этом прямые пересекаются. Значения параметров u, v в точке пересечения

  1. det , det . Прямые параллельны.

3. det , det . Прямые накладываются друг на друга.

Если рассматривается пересечение лучей (отрезков) то дополнительно к условию 1 необходимо проверять условия либо .

2. Расчёт пересечения (перекрещивания, параллельности, наложения) пространственных прямых (лучей, отрезков).

Как и в п.1, представим условие пересечения в виде

, где А=

Обозначим подматрицы А следующим образом:

; .

Также рассмотрим матрицы

; .

Возможны следующие ситуации:

I. . Прямые не параллельны.

1) Если , то рассчитываем значения параметров в возможной точке пересечения по формуле:

.

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

а) условие выполнено. Следовательно,L1(u) иL2(v) пересе-каются при значениях , .

б) условие не выполнено. Тогда прямые скрещиваются.

2) Если , то рассчитываем

и аналогично проверяем условие .

II. . Возможны 2 варианта :

а) . В этом случае имеет место наложе-ние прямых, т.е. они совпадают.

б) . Прямые параллельны и не име-ют общих точек.

3.Определение пересечения (касания) дуги окружности С с прямой L (отрезком )на плоскости.

Задана дуга окружности С:

.

(в случае полной окружности )

и прямаяL, проходящая через точки , :

L(u) =P1+ (P2 -P1 ) u ; (в случае отрезка 0 u 1).

Необходимо выяснить, пересекаются (касаются) ли эти примитивы, если да – то найти координаты точки пере-сечения (касания) и указать соответствующие значения па-раметров и u .

Вначале проверяем расстояние от центра P0 дуги С до прямойL. Для этого вначале определим точку Pn , в которую опускается перпендикуляр из наL. Так как Pn L, то ей соответствует некоторое значение параметра прямой un, для которого справедливо: .

Из условия перпендикулярности отрезков и , записанного как равенство нулю скалярного произведения: ,

получим: .

По находим и длину перпендикуляра . Затем проверяем: .

Если условие не выполняется, то пересечение заведо-мо невозможно и ответ отрицательный. Если условие вы-полняется, то возможны две ситуации:

1. ( Рис.1.11). Определим две возможных точки пересечения L с окружностью и . Для этого вначале рассчитываем расстояния а от точек и до основания перпендикуляра :

Рис. 1.11

Затем, используя единичный направляющий вектор t прямойL, находим координаты возможных точeк пересе-чения: ; .

Углы и ,соответствующие и , находим по (1.8 б, в). Если , то прямая L пересекает дугу C в точ-ке . Аналогично проверяем для .

В том случае еслиL - отрезок (луч), то дополнительно определяются значения параметра u в точках и :

; ,

а также проверяются условия:

, .

Если условия выполнены, то пересечение есть, иначе – нет.

2. . Возможно касание в точке (Рис.1.12).

Рис. 1.12

По формулам (1.8 б,в) определяем п. Если0 п 1, то касание с дугой есть. Иначе – нет.

Для отрезка (луча) дополнительно проверяется усло-вие 0 u п 1 (0 u п < + ).

4.Расчёт пересечения (касания) дуг окружностей , .

Заданы дуги окружностей

;

.

Необходимо выяснить наличие пересечения (касания) и . Если оно есть, то указать координаты точек пере-сечения (касания) и соответствующие им значения пара-метров и .

Находим расстояние между центрами окружнос-тей и и проверяем выполнение условия 12 r1 + r2.

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

Если условие выполнено, то есть 2 возможности.

1. 12 = r1 + r2. Касание окружностей, содержащих дуги и (Рис 1.13). Рассматриваем вектор и определяем по

Рис. 1.13

(1.8.б, в) угол его наклона относительно оси х. Затем рассчитываем угловое положение точки касания для второй окружности: (mod 2).

Если и , то касание есть. Декартовы координаты точки касания:

.

Если хотя бы одно из условий не выполняется, то каса-ния нет.

2. 12 r1+r2 . Пересечение окружностей, содержащих и

Рис. 1.14

(Рис 1.14). Как и в п.1, находим угол .Угловое отклонение точек пересечения на первой окружности от угла находим по теореме косинусов:

.

Угловое положение точек пересечения и на окружности, содержащей , задается углами

,

.

Условие принадлежности точек и дуге имеет вид:

, .

Проверка принадлежности точек и дуге производится аналогично:

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

5.Определение пересечения ( параллельности, наложения ) пространственной прямой ( луча, отрезка ) , проходя-щей через точки Р1 , Р2 , и плоскости (,w) (пространст-венного треугольника),проходящих через точки Р3 , Р4 , Р5 .

Уравнение прямой:

;

Уравнение плоскости:

; , .

В точке пересечения . Заменяя век-торные разности (Р2Р1), (Р4Р3), (Р5Р3) соответ-ствующими единичными направляющими векторами , , :

=(Р2Р1)/Р2Р1,

= (Р4Р3)/Р4Р3,

= (Р5Р3)/Р5Р3,

и вводя новые параметры:

; ; ,

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

, где

Возможны следующие случаи:

  1. det A=0, P3 -P3=0 - наложение прямой на плоскость .

  2. det A=0, P3 -P30 - прямая параллельна , точек пересечения нет.

  3. det A 0 - прямая пересекает . Значения параметров в точке пересечения

.

В том случае, если примитив L(u) является отрезком (лучом), то дополнительно проверяется условие на параметр un: 0 un 1 ( 0 un < +).

Если (,w) является пространственным треугольни-ком, то необходимо проверить дополнительные условия на параметры v n и w n:

0 vn , w n 1,

0 vn+ wn 1.

6. Расчёт площади плоских многоугольников.

Обычно в машинной графике плоский n - угольник за-дают при помощи декартовых координат его вершин i , уi),(i = 1,…,n). Наиболее просто площадь S многоугольника рассчитывается по формуле