各位,判断一个点是否在弧上,有没有什么好的算法?

解决方案 »

  1.   

    bool bFlgEnd=false;
    for(iOffSet=0;!bFlgEnd;iOffSet++)
    {
    for(i=1;i<m_lLianMaCount;i++)
    {

    iTemY=(m_ipTraceX[i]-m_ipTraceX[0])*(m_MidPoint.y-m_ipTraceY[0])/(m_MidPoint.x-m_ipTraceX[0])+m_ipTraceY[0];
    if((iTemY==m_ipTraceY[i]+iOffSet)&&m_ipTraceY[i]!=m_ipTraceY[0])
    {
    bFlgEnd=true;
    break;
    }
    if((iTemY==m_ipTraceY[i]-iOffSet)&&m_ipTraceY[i]!=m_ipTraceY[0])
    {
    bFlgEnd=true;
    break;
    }
    }
    }
    供参考
      

  2.   

    你在判断的时候没有考虑误差, 在圆弧的计算过程中,无论你采用整数,还是采用浮点数,计算都存在误差。你的相等判断值在数学公式中才成立,在代码中由于误差就会不成立。
    所以,你要判断两个数是否相同要采用下面的方法if(fabs(a-b) < tolerance)
      equal;
    else
      not equal;tolerance 是一个小量。他的大小取决于你的系统的计算精度。
    ============================================================================
    提问题时要在标题中简明扼要的说明                    给我发信息请附带原帖地址
    http://www.betajin.com/alphasun/index.htm           
    http://alphasun.18en.com/                    http://shakingtoolkit.9126.com/
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  3.   

    可是,到圆心的距离等于半径R的点不一定在某个特定的弧上啊!是不是啊?zxping(zxping)