VECTOR


template<int n,class T> class VECTOR;

Общее

VECTOR<n,T> vec;

n - размер вектора - произвольное положительное целое число. T - тип его элементов.

Доступ к данным вектора:

Для 2-ух мерных векторов:

vec.x(); vec.y();

vec[0]; vec[1];

vec.M[0]; vec.M[1]; // не желательно, если только не под CUDA.

Операции

Функции члены

cross(const VECTOR& v) : VECTOR

Векторное произведение: v3 = v1.cross(v2). Вместо этого могут быть использованы  v3 = cross3(v1,v2) или  v3 = v1->*v2

dot(const VECTOR& v) : T

скалярное произведение. T x = v1.dot(v2) Вместо этого можно использовать x = dot(v1,v2) или x= v1*v2

len(), lenSquare() : T

длинна, квадрат длины

Normalize(): void

нормализация

Zero(): void

обнуление

Операции с векторами

вектор-константа или константа-вектор '*', '/', (правые и левые) '*=', '/='
векторо-вектор '+', '-', '==', '+=', '-=',
скалярное произведение a*b, a.dot(b), dot3(a,b)
векторное произведение a->*b, a.cross(b), cross3(a,b)
покомпонентное умножение

'*='

умножение матриц и векторов

m*v, v*m

Особенности

VECTOR<4,float>

По умолчанию автоматически поддерживает SSE операции. Может быть неявно преобразован в тип __m128

DISCARD_FOURTH_DIMENTION

Этот флаг позволяет работать с 4D векторами как с 3D. По умолчанию он включен. Если его отключить, все операции с VECTOR<4,float> будет считаться по 4 компонентам. Однако если он выключен, но не отключена SSE оптимизация, все операции кроме скалярного и векторного произведения все-равно будут выполняться над 4D векторами как над 4D а не 3D. Отключить SSE можно, закоментировав включение MGML_MATH_SIMD.h В случае отключенного SSE и включенного флага DISCARD_FOURTH_DIMENTION все операции над 4D векторами будут выполняться как над 3D векторами.

С остальными 4D векторами(не float) ситуация проще. Если DISCARD_FOURTH_DIMENTION  включен, все операции использую только 3D иначе все операции используют 4D.

 

operator==

всегда сравнивает n элементов независимо от флага DISCARD_FOURTH_DIMENTION и SSE оптимизации




<< Вернуться назад

Статьи и обзоры

Поиск пересечений

Обратная трассировка лучей

Быстрая трассировка лучей

Индустриальная основа

Фотореалистичная визуализация

GPU ray tracing

Сферические гармоники

Дружественные проекты:

OpenSource RTRT

Siberian renderer

Наши разработки

Hydra renderer

AdaRT

Публикации

Загрузить

Скриншоты и видео

ССЫЛКИ

© Copyright 2007 Владимир Фролов, Александр Фролов

При поддержке Лаборатории компьтерной графики и мультимедия ф-та ВМК МГУ
Создание сайта: Александр Фролов