FUNCTION vector_difference
(* SCHEMA STRUCTURAL_FRAME_SCHEMA; *)
(* Modified for LPM/6 *)
FUNCTION vector_difference
(arg1, arg2 : vector_or_direction) : vector;
LOCAL
result : vector;
res, vec1, vec2 : direction;
mag, mag1, mag2 : REAL;
ndim : INTEGER;
END_LOCAL;
IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim)
THEN
RETURN (?) ;
ELSE
BEGIN
IF 'STRUCTURAL_FRAME_SCHEMA.VECTOR' IN TYPEOF(arg1) THEN
mag1 := arg1.magnitude;
vec1 := arg1.orientation;
ELSE
mag1 := 1.0;
vec1 := arg1;
END_IF;
IF 'STRUCTURAL_FRAME_SCHEMA.VECTOR' IN TYPEOF(arg2) THEN
mag2 := arg2.magnitude;
vec2 := arg2.orientation;
ELSE
mag2 := 1.0;
vec2 := arg2;
END_IF;
vec1 := normalise (vec1);
vec2 := normalise (vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0.0;
res := dummy_gri || direction(vec1.direction_ratios);
REPEAT i := 1 TO ndim;
res.direction_ratios[i] := mag1*vec1.direction_ratios[i] +
mag2*vec2.direction_ratios[i];
mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]);
END_REPEAT;
IF (mag > 0.0 ) THEN
result := dummy_gri || vector( res, SQRT(mag));
ELSE
result := dummy_gri || vector( vec1, 0.0);
END_IF;
END;
END_IF;
RETURN (result);
END_FUNCTION; (* STEP Part 42 (modified for 2nd edition) *)
Referenced By
Defintion vector_difference is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2023-03-25T00:11:39-04:00