OpenCasCade数学库 - 函数IsEqual

1.gp_Dir

    方向的相等判断:方向相同。(方向夹角接近0度)

inline Standard_Boolean  gp_Dir::IsEqual(const gp_Dir& Other, const Standard_Real AngularTolerance) const
{
     return  Angle (Other) <= AngularTolerance; 
} 

2.gp_Vec

    向量的相等判断:长度相同,方向相同。(两个向量有一个接近0向量,不再需要计算向量夹角)

Standard_Boolean gp_Vec::IsEqual(const gp_Vec& Other, const Standard_Real LinearTolerance,const Standard_Real AngularTolerance) const
{
  if (Magnitude () <= LinearTolerance ||  Other.Magnitude () <= LinearTolerance)
  {
    Standard_Real val = Magnitude() - Other.Magnitude();
    if (val < 0) val = - val;
    return val <= LinearTolerance;
  }
  else 
  {
    Standard_Real val = Magnitude() - Other.Magnitude();
    if (val < 0) val = - val;
    return val <= LinearTolerance && Angle(Other) <= AngularTolerance;
  }
}

3.gp_Pnt

    的相等判断:位置相同。(两点间的距离接近0)

inline Standard_Boolean gp_Pnt::IsEqual(const gp_Pnt& Other,const Standard_Real LinearTolerance) const
{ 
    return Distance (Other) <= LinearTolerance; 
}

4.gp_XYZ

     XYZ相等判断:每个分量都相同。

Standard_Boolean gp_XYZ::IsEqual (const gp_XYZ& Other,const Standard_Real Tolerance) const 
{
    Standard_Real val;
    val = x - Other.x;
    if (val < 0) val = - val;
    if (val > Tolerance) return Standard_False;
    val = y - Other.y;
    if (val < 0) val = - val;
    if (val > Tolerance) return Standard_False;
    val = z - Other.z;
    if (val < 0) val = - val;
    if (val > Tolerance) return Standard_False;
    return Standard_True;
}

5. gp_Quaternion

    四元数相等判断:每个分量都相同。

Standard_Boolean gp_Quaternion::IsEqual (const gp_Quaternion& theOther) const
{
    if (this == &theOther)
        return Standard_True;
    return Abs (x - theOther.x) <= gp::Resolution() &&
           Abs (y - theOther.y) <= gp::Resolution() &&
           Abs (z - theOther.z) <= gp::Resolution() &&
           Abs (w - theOther.w) <= gp::Resolution();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值