|
Макеты страниц
4.9. Построение линий пересечения поверхностейПересечение плоскостей.Линия пересечения двух плоскостей
с единичными нормалями
Плоскости пересекаются по линии
Параметры плоскостей, соответствующие точки
при условии ортогональности пар векторов
Эти линии при каждом параметре t совпадают в пространстве друг с другом и с линией Частные случаи.Во многих частных случаях задачу пересечения поверхностей можно решить достаточно просто. Пусть поверхность (3.5.1) получена выдавливанием кривой на плоскости. Если плоская кривая задана координатными функциями
При пересечении этой поверхности плоскостью Аналогично можно получить линию пересечения поверхности, полученной вращением кривой на плоскости вокруг оси, принадлежащей этой плоскости, и плоскости, проходящей через ось вращения. Кривую пересечения поверхности вращения плоскостью, ортогональной оси вращения, построим из окружности на плоскости и линии При построении линии пересечения такими способами следует соблюдать одно правило: линии на пересекаемых поверхностях должны иметь одинаковые области определения параметра и их соответствующие точки на поверхностях должны совпадать в пространстве. Общий случай пересечения поверхностей.Обратимся к общему случаю пересечения поверхностей. Пусть требуется найти линию пересечения поверхностей, описываемых радиус-векторами
Это векторное уравнение содержит три скалярных уравнения для компонент радиус-векторов поверхностей:
и четыре искомых параметра:
Рис. 4.9.1. Линии пересечения цилиндрической поверхности и NURBS поверхности Таким образом, три параметра являются функциями четвертого параметра. Чтобы все четыре параметра были равноправными, представим их все в виде функции некоторого общего параметра t:
и придем к тому, что результатом решения системы уравнений (4.9.4) являются две двухмерные линии
Эти линии связаны друг с другом общим параметром и определяют одну и ту же линию в пространстве — линию пересечения поверхностей. На рис. 4.9.1 приведен пример пересечения поверхностей. В общем случае невозможно оперировать линией пересечения отдельно от породивших ее поверхностей. Но всегда можно построить линию, которая при любом заданном параметре t давала бы точку пересечения поверхностей. Эту линию мы представим в виде совокупности отдельных точек линии пересечения поверхностей в порядке расположения их на ней. Имея упорядоченные точки линии пересечения, всегда можно найти любую другую точку линии. Пусть параметры
Рис. 4.9.2. Вычисление точки линии пересечения поверхностей по ранее определенным точкам Пусть первой точке соответствует параметр
с началом в точке
ортогональную отрезку, проведенному из точки
поверхностей и найдем точку пересечения поверхностей и плоскости из системы шести уравнений, которые в векторной записи имеют вид
Эта точка и будет искомой точкой линии пересечения. Далее можно определить любую другую геометрическую информацию линии пересечения поверхностей. Таким образом, совокупность отдельных точек линии пересечения поверхностей служит как бы нулевым приближением этой линии, по которому одним из численных методов всегда можно найти точное решение. Алгоритм построения линий пересечения.Две поверхности могут пересекаться по нескольким линиям. Мы ставим своей целью построить все линии пересечения, принадлежащие области определения обеих поверхностей. Алгоритм построения линий пересечения поверхностей разобьем на два этапа. На первом этапе, шагая по поверхностям и исследуя их близость, найдем отдельные точки кривых пересечения. Под точками в данном случае будем иметь в виду пары параметров гг, v и а, b на параметрических плоскостях поверхностей. Точки из полученного на первом этапе набора никак не связаны друг с другом и могут принадлежать различным кривым пересечения. Важно только, чтобы от каждой кривой пересечения в наборе присутствовала хотя бы одна точка. На втором этапе берем любую точку из имеющегося набора и, двигаясь от нее с некоторым шагом сначала в одну сторону затем в другую, найдем точку за точкой искомую совокупность точек линии пересечения. Направление движения дает векторное произведение нормалей к поверхностям. Шаг движения вычислим в соответствии с кривизнами поверхностей в текущей точке. Движение по кривой пересечения закончим, когда дойдем до края одной из поверхностей или когда линия замкнется (новая точка окажется на расстоянии текущего шага от точки старта). В процессе движения будем проверять, не лежат ли вблизи пути следования точки из набора, полученного на первом этапе. Для этого по пути следования будем вычислять расстояние от текущей точки кривой пересечения до каждой точки из набора, полученного на первом этапе. Если вычисленное расстояние до какой-либо точки набора соизмеримо с текущим шагом движения, то эту точку удалим из набора как более ненужную. Так получим совокупность отдельных точек Рассмотрим подробнее отдельные элементы алгоритма построения линий пересечения двух поверхностей. Для определения начальных точек пересечения на первом этапе решим задачу пересечения линий Возьмем из полученного набора произвольную точку пересечения поверхностей. Пусть ее параметры на первой поверхности равны Построим нормали к поверхностям
Выберем в качестве направления движения к следующей точке линии пересечения положительное направление вектора t. Далее, по формулам (4.2.4) и (4.2.5) определим возможный шаг смещения по каждому из четырех параметров
которые и дают направления движения вдоль параметров. На рис. 4.9.3 показаны отправная точка
Рис. 4.9.3. Определение неподвижного параметра и начальных приближений для следующей точки линии пересечения поверхностей Следующая точка линии пересечения не должна выйти за сферу смещения. Радиус сферы смещения
Для следующей точки линии пересечения в качестве нулевых приближений примем значения параметров:
Тот параметр, производная по которому составляет меньший угол (по абсолютной величине) с направлением линии пересечения, сделаем неподвижным. Далее, решив систему уравнений (4.9.4), в которой неподвижный параметр будет считаться известным и неизменным, получим остальные три параметра. Таким образом, найдем параметры Если в процессе движения мы оказались вблизи точки отправления, это означает, что кривая пересечения является замкнутой. Близость точек определяется с помощью тех же шагов по параметрам, которые используются в процессе движения. Кривая пересечения должна замкнуться, если на очередном шаге параметры отличаются не более, чем на величины Если в процессе движения мы оказались вблизи границы одной из поверхностей и движемся в ее направлении (имеется в виду прямоугольная граница), то в качестве неподвижного параметра следует выбрать тот, который находится рядом со своей границей. Важно, чтобы были найдены параметры, соответствующие крайним точкам линии пересечения. Для этого функции поверхностей, определяющие векторы точек и их производных, должны корректировать параметры, если они вышли за область определения. После определения крайней точки линии пересечения поверхностей продолжим движение и поиск параметров линии пересечения в другом направлении от точки старта (в противоположном вектору t направлении). Такая линия не может быть замкнутой, поэтому движение будем продолжать до тех пор, пока не будут найдены параметры другого края линии пересечения поверхностей. Если одна из поверхностей или обе имеют не прямоугольную область определения параметров, а ограниченную контурами область на параметрической плоскости, то при поиске параметров линии пересечения в качестве границы можно использовать габаритный прямоугольник внешнего контура области. После построения линий пересечения их следует проверить на пересечение с граничными контурами и усечь этими контурами, сохранив только те части линий пересечения, которые лежат внутри областей определения параметров обеих поверхностей. Если на некотором участке пересекаемые поверхности имеют близкие (почти коллинеарные) нормали, то кривая пересечения в этом месте может сильно менять свое направление. Шаг по фиксированному параметру в этой области должен быть уменьшен. Если линии пересечения поверхностей проходят через точку касания, то в этой точке поверхности имеют коллинеарные нормали. Матрица линеаризованной системы уравнений (4.9.4) в этой точке будет иметь нулевой определитель и из этой системы уравнений нельзя найти параметры точки касания поверхностей. В этом случае вместо системы уравнений (4.9.4) можно решать систему четырех скалярных уравнений
определитель которой не равен нулю в точке касания. Но системе (4.9.14) удовлетворяют не только точки касания, а еще и другие точки, в которых касательные к поверхностям плоскости параллельны друг другу и ортогональны отрезку, соединяющему точки касания. Поэтому после решения системы уравнений (4.9.14) следует проверить то, что полученные точки являются точками касания. Для этого будем использовать тот же критерий, что применяется в задаче пересечения кривой и поверхности. Итерационный процесс решения системы (4.9.14) закончим, когда на очередной итерации приращение каждого из параметров станет меньше некоторой заданной величины е. Отклонению
Если расстояние между найденными точками на поверхностях меньше Итак, в общем случае описанным выше способом каждую линию пересечения двух поверхностей будем представлять упорядоченной совокупностью параметров Пусть мы имеем для линии пересечения поверхностей
Производные радиус-вектора линии пересечения поверхностей вычислим как среднее арифметическое производных кривых на поверхностях по формулам
Производные радиус-векторов кривых на поверхностях вычисляются по формулам (1.7.20)
Если параметрические зависимости (4.9.5) не являются точными и дают точки линий пересечения при целочисленных значениях параметра t (при других значениях параметра проходят вблизи линии пересечения), то формулы (4.9.16)-(4.9.19) будут верны только приближенно. Точные значения радиус-вектора линии пересечения поверхностей и ее производных можно получить из системы уравнений (4.9.8).
|
Оглавление
|