Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по GLScene.doc
Скачиваний:
255
Добавлен:
16.12.2018
Размер:
7.18 Mб
Скачать

Приложение

I. Типы векторов и матриц

Количество элементов

Тип

Описание в модуле

VectorTypes

Тип элементов

Двухмерные векторы (массивы из двух элементов)

TVector2d

array[0..1] of double

double

TVector2f

array[0..1] of single

single

TVector2i

array[0..1] of longint

longint

TVector2s

array[0..1] of smallint

smallint

TVector2b

array[0..1] of byte

byte

Трёхмерные (массивы из трёх элементов)

TVector3d

array[0..2] of double

double

TVector3f

array[0..2] of single

single

TVector3i

array[0..2] of longint

longint

TVector3s

array[0..2] of smallint

smallint

TVector3b

array[0..2] of byte

byte

Четырёхмерные (кроме X,Y,Z содержат элемент W)

TVector4d

array[0..3] of double

double

TVector4f

array[0..3] of single

single

TVector4i

array[0..3] of longint

longint

TVector4s

array[0..3] of smallint

smallint

TVector4b

array[0..3] of byte

byte

Трёхмерные Матрицы (массивы трёхмерных векторов)

TMatrix3d

array[0..2] of TVector3d

TVector3d

TMatrix3f

array[0..2] of TVector3f

TVector3f

TMatrix3i

array[0..2] of TVector3i

TVector3i

TMatrix3s

array[0..2] of TVector3s

TVector3s

TMatrix3b

array[0..2] of TVector3b

TVector3b

Четырёхмерные Матрицы (массивы Четырёхмерных векторов)

TMatrix4d

array[0..3] of TVector4d

TVector4d

TMatrix4f

array[0..3] of TVector4f

TVector4f

TMatrix4i

array[0..3] of TVector4i

TVector4i

TMatrix4s

array[0..3] of TVector4s

TVector4s

TMatrix4b

array[0..3] of TVector4b

TVector4b

II. Работа с векторами

VectorSubtract(const V1, V2 : TVector) : TVector; - вычитает V2 из V1

SubtractVector(var V1 : TVector; const V2 : TVector); - вычитает из v1, v2 и результат заносит в v1. VectorSubtract(const v1 : TVector; delta : Single) : TVector; - из каждой координаты вектора v1

вычитает число delta.

VectorAdd(const v1, v2 : TVector) : TVector; - складывает два вектора.

AddVector(var v1 : TVector; const v2 : TVector); - складывает вектора v1, v2 и помещает результат в v1.

AddVector(var v : TVector; const f : Single); - к каждой координате вектора v прибавляет число f.

CombineVector(var vr : TVector; const v : TVector; var f : Single); - в переменную vr заносит линейную комбинацию векторов vr:=vr+v*f.

VectorCombine(const V1, V2: TVector; const F1, F2: Single): TVector; - возвращает линейную комбинацию двух векторов по формуле Result:= V1*F1+V2*F2.

VectorCombine3(const V1, V2, V3: TVector; const F1, F2, F3: Single): TVector; - возвращает линейную комбинацию трех векторов по формуле Result:= V1*F1+V2*F2+V3*F3.

VectorDotProduct(const V1, V2 : TVector) : Single; - умножает вектор строку V1 на V2 по формуле

Result:=V1[X] * V2[X] + V1[Y] * V2[Y] + V1[Z] * V2[Z]

DistanceBetweenAngles(angle1, angle2 : Single) : Single; - вычисляет угловое расстояние между двумя углами в радианах. Результат лежит в интервале от 0 до пи.

VectorLength(const v : TVector) : Single; - вычисляет длину вектора по формуле: корень из суммы квадратов координат sqrt (x*x+y*y+z*z+w*w).

VectorLength(const x, y, z : Single) : Single; вычисляет длину вектора по формуле: корень из суммы квадратов координат sqrt (x*x+y*y+z*z).

VectorNorm(const v : TVector) : Single; - вычисляет вторую норму по формуле x*x+y*y+z*z+w*w. NormalizeVector(var v : TAffineVector); - нормализует вектор, т.е. делает длину вектора равную

единице.

VectorNormalize(const v : TVector) : TVector; - возвращает нормализованный вектор. VectorAngleCosine(const V1, V2: TAffineVector) : Single; - возвращает косинус угла между

векторами.

VectorNegate(const v : TVector) : TVector; - меняет направление v на противоположное. ScaleVector(var v : TVector; factor : Single); - каждую координату вектора v умножает на factor. ScaleVector(var v : TVector; const factor : TVector); - перемножает соответствующие координаты v и

factor, результат заносит в переменную v.

DivideVector(var v : TVector; const divider : TVector); - делит координаты v на соответствующие координаты divider, результат заносит в переменную v.

VectorEquals(const V1, V2: TVector) : Boolean; - сравнивает два вектора и возвращает true если она равны.

AffineVectorEquals(const V1, V2: TVector) : Boolean; - сравнивает координаты x, y, z и если они равны возвращает true.

VectorIsNull(const v : TVector) : Boolean; - возвращает true если координаты x=y=z=0, (w –

игнорируется).

VectorSpacing(const v1, v2 : TVector): Single; - вычисляет норму1, т.е. результат равен сумме модулей разностей координат Abs(v1[x]-v2[x])+Abs(v1[y]-v2[y])+ Abs(v1[z]-v2[z])+ Abs(v1[w]-v2[w])

VectorDistance(const v1, v2 : TVector): Single; - вычисляет расстояние между двумя точками. VectorDistance2(const v1, v2 : TVector): Single; - вычисляет норму2 по формуле sqr(v1[x]-v2[x])+

sqr(v1[y]-v2[y])+ sqr(v1[z]-v2[z])

RotateVector(var vector : TVector; const axis : TVector; angle : Single); - поворачивает вектор vector

относительно оси axis на угол angle.

VectorRotateAroundX(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси X на угол alpha.

VectorRotateAroundX(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси Y на угол alpha.

VectorRotateAroundZ(const v : TAffineVector; alpha : Single) : TAffineVector; - поворачивает вектор вокруг оси Z на угол alpha.

AbsVector(var v : TVector); - координаты вектора заменяются их модулями.