zoukankan      html  css  js  c++  java
  • IfcVectorDifference

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

    此函数将输入参数的差值返回为(Arg1-Arg2)。函数返回两个输入向量的向量差作为向量。输入参数应具有相同的维数,但可以是方向或向量。如果两个输入参数都是向量,则它们必须用相同的单位表示,如果两个输入参数都是方向,则生成无单位结果。零差向量产生零量级的向量。

    注:根据ISO 10303-42中不同定义的向量_改编的函数。

    IFC1.5中的新函数

    EXPRESS Specification

    FUNCTION IfcVectorDifference
      (Arg1, Arg2 : IfcVectorOrDirection)
        : IfcVector;
    LOCAL
      Result : IfcVector;
      Res, Vec1, Vec2 : IfcDirection;
      Mag, Mag1, Mag2 : REAL;
      Ndim : INTEGER;
    END_LOCAL;
    
      IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN
        RETURN (?) ;
      ELSE
        BEGIN
          IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(Arg1) THEN
            Mag1 := Arg1IfcVector.Magnitude;
            Vec1 := Arg1IfcVector.Orientation;
          ELSE
            Mag1 := 1.0;
            Vec1 := Arg1;
          END_IF;
          IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(Arg2) THEN
            Mag2 := Arg2IfcVector.Magnitude;
            Vec2 := Arg2IfcVector.Orientation;
          ELSE
            Mag2 := 1.0;
            Vec2 := Arg2;
          END_IF;
          Vec1 := IfcNormalise (Vec1);
          Vec2 := IfcNormalise (Vec2);
          Ndim := SIZEOF(Vec1.DirectionRatios);
          Mag  := 0.0;
          Res  := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]);
    
          REPEAT i := 1 TO Ndim;
            Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] - Mag2*Vec2.DirectionRatios[i];
            Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]);
          END_REPEAT;
    
          IF (Mag > 0.0 ) THEN
            Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag));
          ELSE
            Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0);
          END_IF;
        END;
      END_IF;
      RETURN (Result);
    END_FUNCTION;
    QQ 3087438119
  • 相关阅读:
    算法的时间复杂度
    二叉树递归建立和遍历
    数据挖掘之分类算法---knn算法(有matlab例子)
    C链表之创建简单静态链表
    ID3决策树算法原理及C++实现(其中代码转自别人的博客)
    adobe reader安装完成之前被中断,错误代码150210解决方法
    Oracle性能诊断艺术-读书笔记
    先对结果集排序然后做update、delete操作
    索引聚簇因子相关
    直方图及low_value、high_value
  • 原文地址:https://www.cnblogs.com/herd/p/14459870.html
Copyright © 2011-2022 走看看