IFC 4.3.0.0 (IFC4X3) final

8.9.6.20 IfcSameDirection

8.9.6.20.1 Semantic definition

The function compares two IfcDirection's and ensures that they are the same (with an epsilon precision factor).

8.9.6.20.2 Formal representation

FUNCTION IfcSameDirection
 (dir1, dir2 : IfcDirection; Epsilon : REAL)
 : LOGICAL;
  LOCAL
    dir1x : REAL := dir1.DirectionRatios[1];
    dir1y : REAL := dir1.DirectionRatios[2];
    dir1z : REAL := 0;
    dir2x : REAL := dir2.DirectionRatios[1];
    dir2y : REAL := dir2.DirectionRatios[2];
    dir2z : REAL := 0;
  END_LOCAL;

  IF (SIZEOF(dir1.DirectionRatios) > 2) THEN
    dir1z := dir1.DirectionRatios[3];
  END_IF;

  IF (SIZEOF(dir2.DirectionRatios) > 2) THEN
    dir2z := dir2.DirectionRatios[3];
  END_IF;
  
  RETURN (IfcSameValue(dir1x,dir2x,Epsilon) AND
          IfcSameValue(dir1y,dir2y,Epsilon) AND
          IfcSameValue(dir1z,dir2z,Epsilon));

END_FUNCTION;

8.9.6.20.3 References