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

9.5. Линии очерка

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

Рис. 9.5.1. Проекции линий очерка поверхности

Рис. 9.5.2. Проекции сетки полигонов и линий очерка

На рис. 9.5.1 приведены линии очерка поверхности. На рис. 9.5.2 показаны линии очерка совместно с сеткой поверхности.

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

Параллельные проекции.

Для некоторых поверхностей, например, сферы, цилиндра, конуса, линии очерка строятся достаточно просто. Рассмотрим общий случай построения линий очерка поверхности.

Пусть требуется найти линии очерка поверхности, описываемой радиус-вектором Каждая точка линии очерка для параллельной проекции на плоскость (9.2.1) должна удовлетворять уравнению

(9.5.1)

где — нормаль к поверхности, для которой строится линия очерка. Для поверхности, описываемой радиус-вектором нормаль также является функцией параметров и . Скалярное уравнение (9.5.1) содержит два искомых параметра u, v. Если задать один из параметров, то другой можно найти из уравнения (9.5.1), т. е. один из параметров является функцией от другого. Для равноправия параметров их можно представить в виде функций некоторого общего параметра

(9.5.2)

Результатом решения уравнения (9.5.1) является двухмерная линия

(9.5.3)

на поверхности Эта линия и есть линия очерка поверхности.

Мы построим линию очерка по упорядоченной совокупности точек, удовлетворяющих уравнению (9.5.1). Точками мы называем пару параметров поверхности, являющихся координатами двухмерных точек на параметрической плоскости. Имея отдельные точки линии очерка, расположенные в порядке их следования и на определенном расстоянии друг от друга, всегда можно найти любую другую точку линии. Например, для нахождения точки, лежащей между двумя заданными соседними точками линии очерка, проведем плоскость перпендикулярно соединяющему соседние точки отрезку и найдем общую точку для поверхности и плоскости, решив три скалярных уравнения пересечения совместно с уравнением (9.5.1). Положение плоскости на отрезке можно задать параметром линии. По крайним точкам отрезка определяется нулевое приближение для искомой точки. Таким образом, совокупность отдельных двухмерных точек линии очерка поверхности служит как бы нулевым приближением этой линии, по которому одним из численных методов всегда можно найти точное положение точки. Алгоритм построения линий очерка поверхности можно разбить на два этапа.

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

(9.5.4)

или итерационного процесса

(9.5.5)

найдем параметры одной из точек линии очерка. Производные нормали определяются формулами Вейнгартена (1.7.26), (1.7.28). Таким способом получим набор точек линий очерка. Точки из полученного на первом этапе набора никак не связаны друг с другом и могут принадлежать различным линиям очерка. Важно только, чтобы от каждой линии очерка в наборе присутствовала хотя бы одна точка.

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

где — частные производные нормали — частные производные радиус-вектора поверхности по параметрам .

Знак перед слагаемым совпадает со знаком скалярного произведения Шаг движения вычислим в соответствии с кривизнами поверхностей в текущей точке по формуле (9.4.7) или по формуле (9.4.8). Если

то по формуле (9.4.7) дадим приращение параметру и и по формуле (9.5.4) найдем соответствующий ему параметр v поверхности. В противном случае по формуле (9.4.8) дадим приращение параметру и и по формуле (9.5.5) найдем соответствующий ему параметр и поверхности. Движение по кривой закончим, когда дойдем до края одной из поверхностей или когда линия замкнется (новая точка окажется на расстоянии текущего шага от точки старта).

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

Рис. 9.5.3. Линии очерка тела

Рис. 9.5.4. Тело вращения

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

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

Точки излома у проекции возникают там, где касательная линия очерка коллинеарна вектору

Для построения проекции линии очерка будем строить ее полигон, проекцию которого и возьмем в качестве проекции линии очерка.

Центральные проекции.

Линии очерка в центральных проекциях удовлетворяют уравнению

(9.5.7)

где — нормаль поверхности — радиус-вектор точки наблюдения. Линия очерка для центральной проекции отличается от линии очерка для параллельной проекции, хотя алгоритмы их построения аналогичны. Вместо постоянного вектора в (9.5.7) присутствует вектор , направление которого зависит от проецируемой точки. Линия очерка для центральной проекции также представляет собой некоторую кривую на поверхности, описываемую зависимостями (9.5.3), и является пространственной кривой. Эта линия должна быть спроецирована на плоскость по правилам построения центральной проекции пространственной линии.

На рис. 9.5.5 приведена параллельная проекция линий очерка тора, а на рис. 9.5.6 для сравнения приведена центральная проекция линий очерка тора. Как можно видеть, эти проекции отличаются.

Рис. 9.5.5. Параллельная проекция линий очерка тора

Рис. 9.5.6. Центральная проекция линий очерка тора

Алгоритм построения линий очерка для центральной проекции поверхности, описываемой радиус-вектором отличается от алгоритма построения линий очерка для параллельной проекции этой поверхности тем, что на первом этапе будем искать точки поверхности, в которых меняет знак скалярное произведение . Для определения этих точек вместо формул (9.5.4) и (9.5.5) следует использовать формулы

(9.5.8)

и формулы

(9.5.9)

соответственно. В остальном алгоритм построения линий очерка для центральной проекции поверхности не отличается от алгоритма построения линий очерка для параллельной проекции.

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