uzluga.ru
добавить свой файл
  1 2 3

Современные алгоритмы для пространственной визуализации физических процессов


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

Широкое использование однородных координат в промышленности и компьютерной графике определяет академический интерес в сопоставлении методов тензорного исчисления и однородных координат при практической разработке алгоритмов тензорной математики.

Однородные координаты OpenGL

Вершины (Vertex) в OpenGL задаются однородными векторами-столбцами: = { xyz, e }T, определяющими точки: q/ = { x/, y/, z/, 1 }T в трехмерном пространстве с масштабным множителем . Если компоненты  – единичны:  = 1, то q' = { xy} – станет обычной точкой Евклидова пространства.

Нормали записываются векторами-строками = { xyz, e }, которые в геометрических построениях определяются как однородные плоскости. Если однородная вершина q лежит в однородной плоскости v, то их произведение:  q = 0. Применяется также обозначение нормали как вектора-столбца: nT = v или nT = 0.

Однородные координаты используются в строгом соответствии с математическими моделями линейной алгебры, что формально подразумевает существование опорной ортогональной (Евклидовой) системы отсчета и тем самым исключаются из рассмотрения смешанные тензоры для косоугольных локальных базисов. В однородных координатах не вводится ограничений на малость пространственных деформаций или углов поворота, что соответствует операциям произведения матриц. Операции для поступательных смещений геометрических объектов также задаются с помощью операций произведения, в которых векторы смещений образуются правым окаймляющим столбцом контекстных числовых матрицами: CTM – current transformation matrix.

Работа с графическими объектами и сценами начинается с построения единичной матрицы CTM с помощью процедуры glLoadIdentity() – Начальная инициализация. Затем следует стандартный набор пространственных геометрических преобразований:

glTranslate*( x, y, z )  – перемещение в точку x, y, z;

glRotate*( a, x, y, z )  – вращение – поворот на угол по оси x, y, z;

glScale*( x, y, z )  – масштабирование по компонентам x,y,z;

glOrtho( l, r, b, t, n, f )  – ортогональная проекция для сцены;

glFrustum( l, r, b, t, n, f )  – перспективная проекция в кубе с границами: l, r – левая, правая; b, t – нижняя, верхняя; n, f – ближняя и дальняя.

Общая система координат для графической сцены задается однократно и автоматически перенастраивается при изменении размеров графического экрана.

Процедура перерисовки: glutReshapeFunc( ReShape ).

Функция ReShape включает последовательность контекстных произведений с матрицами СТМ:

void Reshape( int Width, int Height )

{ glViewport( 0,0,Width,Height ); // подтверждение размера графического изображения

glMatrixMode( GL_PROJECTION ); // установка режима настройки сцены

glLoadIdentity(); // установка контекста из единичной матрицы

Real rat = Real( Width )/Height; // фактор искажения масштабов графического экрана

if( rat>1.0 )glOrtho( rat/-2,rat/2, -0.5,0.5, -1,1 ); // установка ортогональной

else glOrtho( -0.5,0.5, -0.5/rat,0.5/rat, -1,1 ); // сцены с размерностью 1.0

gluPerspective( 25.0, 1.0, -1,1 ); // контекстное дополнение до перспективной проекции

gluLookAt( 1,2,6, 0,0,0, 0,1,0 ); // и переустановка точки обзора немного вправо и вверх

glutPostRedisplay(); // активизация очереди с ожиданием полной перерисовки сцены

}

Таким образом, в OpenGL определяется абсолютная или глобальная система координат, а также произвольное количество локальных систем отсчета, непосредственно связанных с каждым из графических объектов, предназначенных для представления на графическом экране ЭВМ.

Смешение деформационных и линейных пространственных компонент в матрицах однородных координат OpenGL затрудняет анализ внутреннего состояния геометрических объектов. Однако при создании и трансформации локальных объектов могут независимо использоваться любые другие математические модели аналитической геометрии, векторного и тензорного исчисления, отвечающие физической сути решаемой задачи.

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

С точки зрения производимых вычислений разница между использованием этих моделей заключается в следующем:

1. Для поступательного перемещения объекта в трехмерном пространстве с использованием тензорной математики необходимо три операции сложения для изменения опорной точки локального базиса. В однородных координатах необходимо как минимум 64 операции умножения и сложения, после чего теряется локальная привязка для последующих вращений и деформаций геометрического объекта.

2. В тензорной математике для вращения и деформации локального базиса требуется умножение матрицы размерностью 3х3 (27 операций), в то время как в однородных координатах перемножаются матрицы 4х4 (64 операции). Таким образом, при всех равных условиях (без использования перемножителя матриц в сопроцессоре) тензорная математика приводит к более эффективным алгоритмам пространственных вычислений как по скорости, так и по ресурсам оперативной памяти.

Математические алгоритмы в однородных координатах OpenGL построены с использованием свободных векторов, дополненных компонентами для обеспечения точности геометрических построений как внутри локальных объектов, так и на дальних дистанциях в абсолютных системах координат. Это приводит к переопределенности (неоднозначности) математических описаний физических процессов теории поля и отчасти затрудняет использование однородных координат для решения прикладных задач гидромеханики.

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


<< предыдущая страница   следующая страница >>