logo
М_В_Г1_3_37

Как и в п.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 многоугольника рассчитывается по формуле