FUNCTION vector_difference

(* SCHEMA integrated_cnc_schema; *)
FUNCTION vector_difference (
    arg1 : vector_or_direction;
    arg2 : vector_or_direction 
    ) : vector;
  LOCAL
    result : vector;
    res : direction;
    vec1 : direction;
    vec2 : direction;
    mag : REAL;
    mag1 : REAL;
    mag2 : REAL;
    ndim : INTEGER;
  END_LOCAL;
    IF (NOT EXISTS(arg1) OR NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim) 
      THEN
      RETURN (?);
    ELSE
      BEGIN
        IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(arg1) THEN
          mag1 := arg1.magnitude;
          vec1 := arg1.orientation;
        ELSE
          mag1 := 1.0;
          vec1 := arg1;
        END_IF;
        IF 'INTEGRATED_CNC_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; -- 10303-42: geometry_schema

Referenced By

Defintion vector_difference is references by the following definitions:
DefinitionType
 first_proj_axis FUNCTION
 second_proj_axis FUNCTION


[Top Level Definitions]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2010-01-12T10:42:26-02:00