Navigation

IfcDotProduct

Function Semantic Definition
Definition from ISO/CD 10303-42:1992: This function returns the scalar (or dot) product of two directions. The input arguments can be directions in either two- or three-dimensional space. The returned scalar is undefined if the input directions have different dimensionality, or if either is undefined.

NOTE Corresponding STEP function dot_product, new function in IFC Release 1.5. Please refer to ISO/IS 10303-42:1994, p. 104 for the final definition of the formal standard.

EXPRESS specification:

FUNCTION IfcDotProduct
  (Arg1, Arg2 : IfcDirection) 
    : REAL;
LOCAL
  Scalar : REAL;
  Vec1, Vec2 : IfcDirection;
  Ndim   : INTEGER;
END_LOCAL;

  IF NOT EXISTS (Arg1) OR NOT EXISTS (Arg2) THEN
    Scalar := ?;
  ELSE
    IF (Arg1.Dim <> Arg2.Dim) THEN
      Scalar := ?;
    ELSE
      BEGIN
        Vec1 := IfcNormalise(Arg1);
        Vec2 := IfcNormalise(Arg2);
        Ndim := Arg1.Dim;
        Scalar := 0.0;
        REPEAT i := 1 TO Ndim;
          Scalar := Scalar + Vec1.DirectionRatios[i]*Vec2.DirectionRatios[i];
        END_REPEAT;
      END;
    END_IF;
  END_IF;
  RETURN (Scalar);
END_FUNCTION;