通过二分法将曲线转换为直线

来源:互联网 发布:mac桌面壁纸网站 编辑:程序博客网 时间:2024/05/13 15:54
void CBTapParser::convertToLine(CBPoint startPt, CBCurveTo* pCurve, CBObList* pLineList){    CBObList curveList;    CBPoint midPt;    bool bBreak = false;    CBCurveTo *pCv1, *pCv2;    curveList.AddTail(pCurve->duplicate());    while (!curveList.IsEmpty())    {        CBCurveTo *pCv = (CBCurveTo *)curveList.RemoveHead();        pCv1 = new CBCurveTo();        pCv2 = new CBCurveTo();        pCv->subDivide(startPt, 0.5, *pCv1, *pCv2);        midPt.setAsMidPt(startPt, pCv->getEndPt());        double dDelta = midPt.distanceSqr(pCv1->getEndPt());        if (dDelta <= 0.002)        {            pLineList->AddTail(new CBLineTo(pCv->getEndPt()));            startPt = pCv->getEndPt();            delete pCv1;            delete pCv2;            delete pCv;        }        else        {            curveList.AddHead(pCv2);            curveList.AddHead(pCv1);            delete pCv;        }    }}

原创粉丝点击