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
  • 相关阅读:
    Kinect 开发 —— 硬件设备解剖
    Kinect 开发 —— 引言
    (转)OpenCV 基本知识框架
    OpenCV —— 摄像机模型与标定
    OpenCV —— 跟踪与运动
    OpenCV —— 图像局部与分割(二)
    OpenCV —— 图像局部与部分分割(一)
    OpenCV —— 轮廓
    OpenCV —— 直方图与匹配
    OpenCV —— 图像变换
  • 原文地址:https://www.cnblogs.com/herd/p/14459870.html
Copyright © 2011-2022 走看看