Главная > Математика > Геометрическое моделирование
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

6.8. Построение симметричного тела

Пусть имеется тело и плоскость. Построим тело, симметричное данному телу относительно данной плоскости. Исходное тело будем называть базовым. Симметричное тело будет зеркальной копией данного тела. Геометрия тела описывается точками, кривыми и поверхностями, которые в конечном итоге описываются точками векторами и скалярами. Поэтому построение симметричного тела в конечном итоге сводится к преобразованию симметрии радиус-векторов точек, свободных векторов и скаляров. Скалярные величины при преобразовании симметрии не изменяются, свободные векторы меняют свое направление, а точки — свое положение.

Пусть плоскость симметрии описывается формулой

где — ортогональные векторы единичной длины. Тогда матрица преобразования симметрии (1.3.8) тела относительно этой плоскости определяется формулой

(6.8.1)

где — диадные произведения векторов. Свободный вектор после преобразования симметрии относительно этой плоскости будет описываться радиус-вектором

(6.8.2)

Произвольная точка после преобразования симметрии относительно этой плоскости будет описываться радиус-вектором

(6.8.3)

После преобразования симметрии все точки и линии на поверхностях останутся неизменными. А вот нормали поверхностей изменят свое направление на противоположное. Там, где нормаль грани и нормаль ее поверхности в исходном теле совпадали по направлению, в зеркальной копии будут иметь противоположное направление, и наоборот: там, где нормаль грани и нормаль ее поверхности в исходном теле не совпадали по направлению, в зеркальной копии будут иметь одинаковое направление. Кроме того, циклы граней зеркальной копии будут иметь направление, противоположное своим оригиналам. Поэтому в гранях зеркальной копии нужно произвести изменение признаков совпадения нормали поверхности и нормали ее грани на противоположные значения и переориентировать циклы. Переориентация направления цикла грани производится перестроением списка ребер (порядок следования ребер в списке обратный) и заменой флагов ребер в списках на противоположные флаги. Такая же переориентация производилась и при выворачивании тела наизнанку. Если выполнить только преобразование геометрических данных тела по матрице (6.8.1), то получим зеркальное отражение тела, вывернутое наизнанку. Таким образом, построение симметричного тела сводится к преобразованию его копии по матрице (6.8.1) и выворачивании ее наизнанку (переориентации его граней).

Симметрия части тела.

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

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

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

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

(6.8.4)

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

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

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

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

(6.8.5)

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

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

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

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

Рис. 6.8.1. Тело и плоскость симметрии

Рис. 6.8.2. Симметричное тело

На рис. 6.8.1 приведено исходное тело и плоскость симметрии. На рис. 6.8.2 приведен результат построения симметричного тела.

<< Предыдущий параграф Следующий параграф >>
Оглавление