IFC 4.3.2.20240809 (IFC4X3_ADD2) under development

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

Edit on Github


Is this page difficult to understand? Let us know!