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

Функции, описанные в данной главе, используется для работы с радиус-векторами трехмерного пространства. Координаты радиус-вектора описываются структурой VECTOR_3.

V3_ABS

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_ABS

REAL

Длина радиус-вектора

Функция V3_ABS возвращает модуль радиус-вектора A (равный длине соответствующего отрезка), вычисленный по формуле

Graphic

Пример

VAR a : OSCAT_BASIC.VECTOR_3; len : REAL; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; len := OSCAT_BASIC.V3_ABS(A := a); (* len = 5.0 *) END_PROGRAM

V3_ADD

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_ADD

VECTOR_3

Сумма радиус-векторов A и B

Функция V3_ADD возвращает сумму радиус-векторов A и B (суммирование векторов представляет собой суммирование их координат).

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; sum: OSCAT_BASIC.VECTOR_3; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; b.X := 1.0; b.Y := 2.0; b.Z := 2.0; sum := OSCAT_BASIC.V3_ADD(A := a, B := b); (* sum = (4, 6, 2) *) END_PROGRAM

V3_ANG

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_ANG

REAL

Угол между радиус-векторами A и B (в радианах)

Используемые модули

V3_DPRO

Функция V3_ANG возвращает значение угла (в радианах) между радиус-векторами A и B.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; ang : REAL; END_VAR a.X := 1.0; a.Y := 0.0; a.Z := 0.0; b.X := 0.0; b.Y := 1.0; b.Z := 0.0; ang := OSCAT_BASIC.V3_ANG(A := a, B := b); (* ang ≈ 1.5707963 (π/2) *) END_PROGRAM

V3_DPRO

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_DPRO

REAL

Скалярное произведение радиус-векторов A и B

Функция V3_DPRO возвращает скалярное произведение радиус-векторов A и B.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; ang : REAL; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; b.X := 1.0; b.Y := 2.0; b.Z := 2.0; ang := OSCAT_BASIC.V3_DPRO(A := a, B := b); (* dot = 11.0 *) END_PROGRAM

V3_NORM

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Одномерный радиус-вектор

Выходы

V3_NORM

VECTOR_3

Единичный радиус-вектор

Используемые модули

V3_ABS, V3_SMUL

Функция V3_NORM конвертирует одномерный радиус-вектор A в единичный вектор, ориентированный в том же направлении.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; unit : OSCAT_BASIC.VECTOR_3; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; unit := OSCAT_BASIC.V3_NORM(A := a); (* unit ≈ (0.6, 0.8, 0.0) *) END_PROGRAM

V3_NUL

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_NUL

BOOL

Флаг «нулевой вектор»

Функция V3_NUL возвращает TRUE, если радиус-вектор A является нулевым вектором.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; isNul : BOOL; END_VAR a.X := 0.0; a.Y := 0.0; a.Z := 0.0; isNul := OSCAT_BASIC.V3_NUL(A := a); (* isNul ≈ TRUE *) END_PROGRAM

V3_PAR

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_PAR

BOOL

Флаг «коллинеарные векторы»

Используемые модули

V3_ABS, V3_XPRO

Функция V3_PAR возвращает TRUE, если радиус-векторы A и B являются коллинеарными. Нулевой вектор коллинеарен любому вектору, т.к. не имеет направления.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; isPar : BOOL; END_VAR a.X := 1.0; a.Y := 2.0; a.Z := 3.0; b.X := 2.0; b.Y := 4.0; b.Z := 6.0; isPar := OSCAT_BASIC.V3_PAR(A := a, B := b); (* isPar = TRUE *) END_PROGRAM

V3_REV

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_REV

VECTOR_3

Противонаправленный радиус-вектор

Функция V3_REV конвертирует радиус-вектор A в радиус-вектор с равной длиной, но ориентированный в противоположном направлении.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; rev : OSCAT_BASIC.VECTOR_3; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; rev := OSCAT_BASIC.V3_REV(A := a); (* rev = (-3, -4, 0) *) END_PROGRAM

V3_SMUL

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

M

REAL

Число

Выходы

V3_SMUL

VECTOR_3

Произведение радиус-векторов A и числа M

Функция V3_SMUL возвращает произведение радиус-вектора A и числа M.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; m : REAL := 2.0; res : OSCAT_BASIC.VECTOR_3; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; res := OSCAT_BASIC.V3_SMUL(A := a, M := m); (* res = (6, 8, 0) *) END_PROGRAM

V3_SUB

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_SUB

VECTOR_3

Разность радиус-векторов A и B

Функция V3_SUB возвращает разность радиус-векторов A и B.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; dif : OSCAT_BASIC.VECTOR_3; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; b.X := 1.0; b.Y := 2.0; b.Z := 2.0; dif := OSCAT_BASIC.V3_SUB(A := a, B := b); (* dif = (2, 2, -2) *) END_PROGRAM

V3_XANG

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_XANG

REAL

Угол между радиус-вектором и осью X

Используемые модули

V3_ABS

Функция V3_XANG возвращает угол между радиус-вектором A и осью X (в радианах).

Пример

VAR a : OSCAT_BASIC.VECTOR_3; xAng : REAL; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; xAng := OSCAT_BASIC.V3_XANG(A := a); (* xAng ≈ 0.9272952 рад *) END_PROGRAM

V3_XPRO

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор A

B

VECTOR_3

Радиус-вектор B

Выходы

V3_XPRO

VECTOR_3

Векторное произведение радиус-векторов A и B

Функция V3_XPRO возвращает векторное произведение радиус-векторов A и B.

Пример

VAR a : OSCAT_BASIC.VECTOR_3; b : OSCAT_BASIC.VECTOR_3; cross : OSCAT_BASIC.VECTOR_3; END_VAR a.X := 1.0; a.Y := 0.0; a.Z := 0.0; b.X := 0.0; b.Y := 1.0; b.Z := 0.0; cross := OSCAT_BASIC.V3_XPRO(A := a, B := b); (* cross = (0, 0, 1) *) END_PROGRAM

V3_YANG

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_YANG

REAL

Угол между радиус-вектором и осью Y

Используемые модули

V3_ABS

Функция V3_YANG возвращает угол между радиус-вектором A и осью Y (в радианах).

Пример

VAR a : OSCAT_BASIC.VECTOR_3; yAng : REAL; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; yAng := OSCAT_BASIC.V3_YANG(A := a); (* yAng ≈ 0.6435011 рад *) END_PROGRAM

V3_ZANG

Тип модуля: функция

Переменная

Тип

Описание

Входы

A

VECTOR_3

Радиус-вектор

Выходы

V3_ZANG

REAL

Угол между радиус-вектором и осью Z

Используемые модули

V3_ABS

Функция V3_ZANG возвращает угол между радиус-вектором A и осью Z (в радианах).

Пример

VAR a : OSCAT_BASIC.VECTOR_3; zAng : REAL; END_VAR a.X := 3.0; a.Y := 4.0; a.Z := 0.0; zAng := OSCAT_BASIC.V3_ZANG(A := a); (* zAng ≈ 1.5707963 рад *) END_PROGRAM