ГОСТ Р ИСО 13584-31—2010
<NOT EXISTS (arg2> OR <arg2.dim - 2)) THEN
RETURN(?);
ELSE
BEGIN
vl normalise(argl).direction_ratios;
v2 normalise(arg2).direction_ratios;
res.directior._ratios(ll(vl(2]*v2;3) - vl(3J*v2[2J);
res.directior._ratios(2J(vlj3]"v2(1J - vlf1]*v2(3]);
res.directior._ratios(31(vl|1J"v2’2) - vl(21*v2(1]);
mag0.0;
REPEAT i) TO 3;
magmag res.direction_ratiosГi)*res.direction_ratios(il;
END_REPEAT;
IF (mag > 0.0) THEN
result.orientation res;
result.magnitudeSQRTImag);
ELSE
result.orientation argl;
result.magnitude 0.0;
END_1F;
RETURN(result);
END;
END_IF;
END_FUNC TION;
<*
"
Определения аргументов:
argl. (вход) направление, определяющее первый операнд векторного произведения;
arg2: (вход) направление, определяющее второй операнд векторного произведения;
result: (выход) произведение векторов argl и агд2.
6.3.1.10 Функция dot_product
Функция dot_product возвращает скалярное или точечное (.) произведение двух направлений.
Входными аргументами могут быть направления, заданные в двумерном и трехмерном пространствах.
Входные аргументы нормируются перед началом вычислений. Скалярное произведение не определе
но. если исходные направления имеют различную размерность или не определены.
Спецификация на языке EXPRESS.
*)
FUNCTION dot_product(argl, arg2 : direction) : REAL;
LOCAL
scalar : REAL;
vecl, vec2: direction;
ndim r INTEGER;
END_LOCAL;
IF NOT EXISTS (argl) OR NOT EXISTS (arg2) THEN
scalar :- ?;
(* When function is called with invalid data
a NULL result is returned
*)
ELSE
IF (argl.dim <> arg2.dira) THEN
scalar ?;
(* When function is called with invalid data
a NULL result is returned
‘ )
ELSE
BEGIN
vecl :•*normalise (argl) ;
vec2normalise<arg2);
ndimargl.dim;
scalar0.0;
96