FUNCTION cross_product

(* SCHEMA integrated_cnc_schema; *)
FUNCTION cross_product (
    arg1 : direction;
    arg2 : direction 
    ) : vector;
  LOCAL
    mag : REAL;
    res : direction;
    v1 : LIST [3:3] OF REAL;
    v2 : LIST [3:3] OF REAL;
    result : vector;
  END_LOCAL;
    IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.
      dim = 2)) THEN
      RETURN (?);
    ELSE
      BEGIN
        v1 := normalise(arg1).direction_ratios;
        v2 := normalise(arg2).direction_ratios;
        res := dummy_gri || direction([ (v1[2] * v2[3] - v1[3] * v2[2]), (
          v1[3] * v2[1] - v1[1] * v2[3]), (v1[1] * v2[2] - v1[2] * v2[1]) ]
          );
        mag := 0.0;
        REPEAT i := 1 TO 3;
          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(arg1, 0.0);
        END_IF;
        RETURN (result);
      END;
    END_IF;
END_FUNCTION; -- 10303-42: geometry_schema

Referenced By

Defintion cross_product is references by the following definitions:
DefinitionType
 axis2_placement_3d ENTITY
 build_axes FUNCTION
 first_proj_axis FUNCTION


[Top Level Definitions]

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