zoukankan      html  css  js  c++  java
  • IfcNormalise

    注:定义符合ISO/CD 10303-42:1992

    此函数返回一个向量或方向,其分量被规格化为平方和为1.0。输出与输入参数的类型相同(方向或向量,单位相同)。如果输入参数未定义或长度为零,则输出向量未定义。

    注:函数改编自ISO 10303-42中定义的标准化。

    IFC1.5中的新函数

    EXPRESS Specification

    FUNCTION IfcNormalise
      (Arg : IfcVectorOrDirection)
        : IfcVectorOrDirection;
    LOCAL
      Ndim : INTEGER;
      V    : IfcDirection
             := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]);
      Vec  : IfcVector
             := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector (
                IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]), 1.);
      Mag  : REAL;
      Result : IfcVectorOrDirection
             := V;
    END_LOCAL;
    
      IF NOT EXISTS (Arg) THEN
        RETURN (?);
      ELSE
        IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(Arg) THEN
          BEGIN
            Ndim := ArgIfcVector.Dim;
    V.DirectionRatios := ArgIfcVector.Orientation.DirectionRatios;
            Vec.Magnitude := ArgIfcVector.Magnitude;
    Vec.Orientation := V;
            IF ArgIfcVector.Magnitude = 0.0 THEN
              RETURN(?);
            ELSE
              Vec.Magnitude := 1.0;
            END_IF;
          END;
        ELSE
          BEGIN
            Ndim := ArgIfcDirection.Dim;
            V.DirectionRatios := ArgIfcDirection.DirectionRatios;
          END;
        END_IF;
    
        Mag := 0.0;
          REPEAT i := 1 TO Ndim;
            Mag := Mag + V.DirectionRatios[i]*V.DirectionRatios[i];
          END_REPEAT;
        IF Mag > 0.0 THEN
          Mag := SQRT(Mag);
          REPEAT i := 1 TO Ndim;
            V.DirectionRatios[i] := V.DirectionRatios[i]/Mag;
          END_REPEAT;
          IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(arg) THEN
            Vec.Orientation := V;
            Result := Vec;
          ELSE
            Result := V;
          END_IF;
        ELSE
          RETURN(?);
        END_IF;
      END_IF;
      RETURN (Result);
    END_FUNCTION;
    QQ 3087438119
  • 相关阅读:
    HDU 1564 Play a game(巴什博弈)
    威佐夫博弈(Wythoff Game)
    产生冠军 hdoj_2094 巧用set
    find your present (感叹一下位运算的神奇)
    快速排序
    深度优先搜索(DFS)
    hdoj 2075 A|B?
    基础练习 特殊回文数
    10.Nginx Rewrite重写
    07.Nginx七层负载均衡
  • 原文地址:https://www.cnblogs.com/herd/p/14459820.html
Copyright © 2011-2022 走看看