cocos2dx多邊形裁剪

2021-08-10 18:27:54 字數 956 閱讀 1915

cocos2dx提供了clippingnode,用於處理裁剪。

使用步驟是:

建立,設定裁剪形狀,設定被裁剪物件。

另外裁剪多邊形,目前測試只能使用drawpolygon函式繪製的形狀可以被正常裁剪,其他方式繪製的無法正常裁剪,具體原因懶地研究。

例子://被裁剪的node

drawnode *drawnode = drawnode::create();

drawnode->setlinewidth(1);

for(int i=0;i<50;i++)

//裁剪形狀node

drawnode *circlenode = drawnode::create();

const int maxtrangle = 360;

vec2 circlevec2[maxtrangle];

for (int i = 0; i < maxtrangle; i++)

circlenode->drawpolygon(circlevec2, maxtrangle, cocos2d::color4f::red, 1, cocos2d::color4f::red);

circlenode->setposition(100, 100);

//建立clippingnode處理裁剪

clippingnode *clip = clippingnode::create();

clip->setstencil(circlenode);

//clip->setinverted(true);

clip->addchild(drawnode);

this->addchild(clip);

//setstencil 函式用於設定裁剪節點

//setinverted函式用於設定裁剪方式,true:挖掉形狀內部;false:挖掉形狀外部         

//cilp->addchild用於新增被裁剪的節點

多邊形裁剪

如果按線段的方法裁剪,得到的是一系列線段。而實際上,應該得到的是下圖所示的有邊界的區域 多邊形裁剪演算法的輸出應該是裁剪後的多邊 形邊界的頂點序列!需要構造能產生乙個或多個封閉區域的多邊 形裁剪演算法 該演算法的基本思想是將多邊形邊界作為乙個整體,每次用視窗的一條邊對要裁剪的多邊形和中間結果多邊形進...

多邊形裁剪問題

案例 用乙個矩形框裁剪乙個多邊形。思路 將問題降到邊切割邊的問題。霍格曼演算法 h 遍歷 裁剪多邊形的每一條邊,每一條邊向兩邊無限延長,依次分割多邊形。遍歷被裁剪多邊形的每條邊 2條邊的位置關係比較明確。當被裁剪多邊形一條邊 起點p,終點q 相對於視窗某條邊界及其延長線進行剪裁時,共有四種情況 1 ...

多邊形裁剪二 Weiler Atherton演算法

weiler atherton 任意多邊形裁剪 sutherland hodgeman 演算法解決了裁剪視窗為凸多邊形視窗的問題,但一些應用需要涉及任意多邊形視窗 含凹多邊形視窗 的裁剪。weiler atherton 多邊形裁剪演算法正是滿足這種要求的演算法。一 weiler atherton 任...