УДК 515.681.3
АЛГОРИТМ ПОСТРОЕНИЯ ЛИНИИ ПЕРЕСЕЧЕНИЯ ПОВЕРХНОСТЕЙ
ОБЩЕГО ВИДА
© 2011 г. A.B. Замятин
Ростовский государственный строительный Rostov State Building
университет University
Рассмотрен алгоритм построения линии пересечения поверхностей общего вида. Приведенный алгоритм может быть использован для разработки программного обеспечения, реализующего различные вопросы геометрического моделирования.
Ключевые слова: поверхность общего вида; пространственная линия; плоскость.
Formation algorithm of the line intersection of general view surfaces is considered in the article. The given algorithm can be used for working out of software, incarnating various issues of geometrical modeling.
Keywords: general view surface; spatial line; plane.
На практике при проектировании деталей машин, элементов строительных конструкций часто приходится иметь дело с поверхностями общего вида, заданными линейными каркасами, не имеющими аналитического описания. Во многих задачах при проектировании объектов требуется найти линии пересечения заданных поверхностей. В данной статье рассмотрен алгоритм построения линии пересечения двух поверхностей общего вида.
Пусть две поверхности общего вида X и О заданы в виде линейных каркасов k. и L Каждая линия, входящая в каркасы поверхностей, определена дискретным набором точек Kk (xK, yK, zK )
и Lfl (xj, yj, zji) (рис. 1).
Линию пересечения поверхностей m определим в виде дискретного точечного каркаса
M (xM vM 7M )
M ni x^ni , yni , zni / '
где индекс n указывает номер ветви линии; индекс i — номер точки в данной ветви.
Для нахождения точек, принадлежащих линии пересечения, выделим линию, принадлежащую одной из поверхностей, допустим X, и найдем точки ее пересечения со второй поверхностью О. Решая данную задачу для каждой линии повер-
хности X, определим искомую линию пересечения заданных поверхностей. Этот способ построения, в отличие от других, позволяет более просто упорядочить точки линии пересечения.
Рассмотрим задачу построения точек пересечения пространственной линии k¡ с поверхностью общего вида О (рис. 2). Сначала определим приближенные значения координат точек пересечения. Возьмем две рядом стоящие точки линии к. — К.к и К.к+Г Аппроксимируем отрезок линии между этими точками хордой К.к К.к+ Запишем уравнение прямой, на которой лежит эта хорда [1, 2]
х - хК _ У- уй _ г - (1)
хгк+1 - хгк ук+1 - ук ¿¡к+1 - ¿¡к
Заключим прямую (1) в горизонтально-проецирующую плоскость о.к
АкХ + В.кУ + Цк = 0, (2)
где
Ак =1;
ХК - хк
в _ х.к х.к+1 .
в.к к К ' у.к+1 - у.к
D¡к =-АхК - Вук,
если у&+1 - & * ° и Ак = О* = 1; = - &, если Ук+1 - Укк = о.
Найдем линию пересечения плоскости <з1к (2) с заданной поверхностью О — пк в виде дискретного точечного каркаса (хО], уИ], ¿¡к])• Точки Ы1к. являются точками пересечения линий I с плоскостью Ъс • Определим их координаты. Для этого заменим отрезок линии I между соседними точками Ljl и на хорду L.l Уравнение прямой, на которой лежит хорда, аналогично (1). Найдем точку пересечения прямой L.l
и плоскости с1к.
Так как, в дальнейшем, часто надо будет решать эту задачу, решим ее в общем виде для прямой общего положения и плоскости общего положения. Пусть прямая задана двумя точками,
координаты которых (хь у1, гО и (х2, у2, г2). Ее уравнение имеет вид
x - xi = y - yi = z - Zl X Y Z
(3)
У = У2 - У1; 2 = ¿2- ¿1,
X, У и 2 — координаты направляющего вектора заданной прямой. Плоскость общего положения задана уравнением
Ах + Ву + Сг + Б = 0. (4)
Проверим параллельность прямой и плоскости. Они параллельны, если выполняется условие АХ + ВУ + С2 = 0. (5)
Если условие (5) не выполняется, найдем координаты точки пересечения (хпер , упер , гпер ). Если X * 0 , то
пер. _
. (BY + CZ)x1 - BXy1 - CXz1 - DX ,
AX + BY + CZ
ynep. = x^ xi Y + yi;
xnep. - x 7nep. _ X_XL
X
Z + zL.
(6)
где
X — X2 - Xi;
Если X=0, a Z ф 0 , то Xnep. — xL;
Рис. 1. Заданные поверхности
Рис. 2. Выбранная линия и заданная поверхность
пер. _
_ BYz1 - BZy1 - DZ ,
Zikj+1 - zN * 0 : TO
,N
BY + CZ
zпеР. - z yпер. _ z-Z1Y + y1.
(7)
Если X=0 и Z=0, то
xпер. _ xi,
zпер. _ zi;
„пер. _
- Axпер. - Czпер. - D B '
(8)
По приведенным выше формулам (3)—(8), приняв Х1 = х!; , л = , ¿1 = га , Х2 = х|+1,
У2 = Уи+1 ' ¿2 = ^+1, А = Ас , В = В.к , С = 0, Б = Б.к находим координаты точки пересечения
прямой !]! !]!+1 и плоскости ъск. Если найденная точка пересечения принадлежит отрезку [ !]1 !]1+1 ], то она принадлежит линии пк. Для того чтобы эта точка принадлежала отрезку, необходимо выполнение следующего условия:
xпер. - xL ,
x_xy+i
xL - xпер. xij x
> 0.
(9)
Если условие (9) выполняется, то найденные координаты точки пересечения (xпер', yпер', zпер')
являются координатами точки Nikj(x^, ущ, zNj)-
Аналогичным образом находим все точки, принадлежащие линии nlk'
Найдем точку пересечения линии nlk и прямой
Kik Kik+1' Заменим отрезок линии Nikj Nikj+i хордой. Уравнение прямой, на которой лежит хорда, аналогично (1). Найдем точку пересечения
прямых Nikj Nikj+i и Kik Kik+i' Так как обе прямые лежат в одной плоскости Qik, то точку их пересечения можно определить по формулам
(3)-(8), приняв Xi = xKk , У1 = yK , Zi = ZK , x2 = xkk+1, У2 = yik+i ' Z2 = ZiLi, B = 0, если Поступила в редакцию
A _ 1; C _
xN - xN xikj xikj+1 ;
TN ~Ж; zikj+1 zikj
D _ xN C N D _ -xikj - Cziki
ikj '
если 1%]+1 - 1ид = 0 , то А = 0 , С = 1 , Б = -¿щ .
По соотношениям, аналогичным (9), определим, принадлежит ли найденная точка с координатами (хпер., упер., гпер-) отрезкам [N^N^+1] и
[КскК1к+1]. Если соотношения (9) выполняются для обоих отрезков, то эти координаты являются приближенными значениями координат точки линии пересечения заданных поверхностей М. (рис. 3).
M.
Рис. 3. Приближенное определение точки пересечения линий
Разработанный аналитический алгоритм является основой для создания программного обеспечения решения поставленной задачи, что позволяет применить его в качестве модуля систем автоматизированного проектирования в задачах геометрического моделирования различных процессов, в которых необходимо строить линии пересечения поверхностей общего вида, заданных в виде линий, представляющих собой дискретные наборы точек.
Литература
1. Фокс А., Пратт М. Вычислительная геометрия. М., 1982. 304 с.
2. Делоне Б.Н., Райков Д. А. Аналитическая геометрия. М., 1948. Т. 1.
30 сентября 2010 г.
Замятин Александр Витальевич — канд. техн. наук, доцент, Ростовский государственный строительный университет. Тел. (863)263-57-31. E-mail: [email protected]
Zamyatin Aleksandr Vitalievich — Candidate of Technical Sciences, assistant professor, Rostov State Building University. Tel. (863)263-57-31. E-mail: [email protected]