判斷一個點在曲線的左側還是右側的算法經常要用到,其實通過ARX來實現要更簡單一些,先介紹一下算法:
1.首先根据所給的點pt,在曲線上找到距離此點最近的一個點ptOnCurve(一般都是垂點)
2.求出最近點ptOnCurve在曲線上的一階導數deriv1,也就是切線方向。注意:這個切線和曲線的方向是相關的
3.求出pt和ptOnCurve所形成的向量testvec(由ptOnCurve指向pt)
4.求出與testvec正交的向量,可通過perpVector來實現,這個函數把向量testvec順時針旋轉90度後得到一個新向量
5.因為deriv1是和曲線方向相關的,所以判斷兩個向量(deriv1與testvec)是否同向即可判斷出給定點在曲線的左側還是右側

下面是代碼:

擁有一個5位QQ號有多難呢,我給大傢計算一下:平均一天會有兩次以上收到木馬網站鏈接,三次收到陌生人發來的病毒文件請你接收.
平均兩天會有一個人加你QQ,說是中獎或是它是係統,請你回復密碼.
平均三天會有一個人加你QQ,說你的號不錯,賣不賣.
平均四天會有一個陌生人加你,然後說一些莫名其吵的話,然後說借用你QQ號一下.就一會兒!
平均五天會有一個女孩加你,說好聽的...最後都是想借玩一個QQ號!
和一個新交的網友聊天的時候,前僟天,約有一半的時候,在聊你的號是怎麼樣申請的!
好友或是網友加你的QQ號後,會希望你給他一個5位QQ號或是6位的也可以.並且在你說沒有時,對方會不開心.(可是我是真的沒有!)
十個網友中會有一位認為你和QQ公司有關係.
十個網友中會有兩位認為你是黑客,會盜號.
十個網友中會有三位認為你你手中有大量的靚號.
十個網友中會其它四位會含糊說自己的號不好.
噹你告訴別人你的QQ號碼時,別人會吃驚,但同時也會問你還有沒有好QQ號.
噹你告訴別人你的QQ號碼時,別人會等待你說下僟位數字.擁有一個5位QQ可以做什麼?
玩游戲的時候,可以取得一些朋友的信任,會給你一些裝備.
在網上做交易的時候,因為你有5位QQ號,會做退步,會先給你裝備或是錢.
在網上泡美眉的時候,就算她本來打算不理你,但可能會因為你的號不錯.會通過你.
平均加你的十個女生中,十八歲以下的佔多半,她們就是看你號不錯!
以上的都無所謂,因為很多人關注你的QQ號碼,所以你被盜的機會是別人的十倍以上!

bool IsLeftOfCurve(const AcDbCurve* pCurve, AcGePoint3d pt)
{
 AcGePoint3d ptOnCurve;
 pCurve->getClosestPointTo(pt, ptOnCurve);
 AcGeVector3d deriv1, testvec;pCurve->getFirstDeriv(ptOnCurve, deriv1);
 testvec = pt.asVector() - ptOnCurve.asVector();
 return (testvec.perpVector().isCodirectionalTo(deriv1));
}

注意:必須保証此點在曲線上的最近點是它的垂點

arrow
arrow
    全站熱搜

    pttwbnjc 發表在 痞客邦 留言(0) 人氣()