CodehighlightingproducedbyActiproCodeHighlighter(freeware)
http://www.CodeHighlighte" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

凸包計算模塊ConvexHull的使用方法

系統 2295 0

開發了一個模塊,可用來計算平面一些點所構成的凸包。模塊名為ConvexHull.dll。

?

使用方法是這樣的,新建一個WinForm工程(控制臺工程也行,只是輸出結果不大直觀),引用ConvexHull.dll,然后在Form1代碼中引用模塊的命名空間:

?

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> using ?Hiquotion.ComputingGeometry;

?

?

模塊中包含一個類ConvexHull,用這個類聲明一個對象,然后用平面點的集合類(Points)實例化:

?

實例化
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> ???????? private ?ConvexHull?ch;

????????
private ?Points?p? = ? new ?Points();

????????????p.Add(
new ?CGPoint( 10 ,? 10 ));
????????????p.Add(
new ?CGPoint( 30 ,? 50 ));
????????????p.Add(
new ?CGPoint( 10 ,? 30 ));
????????????p.Add(
new ?CGPoint( 20 ,? 70 ));
????????????p.Add(
new ?CGPoint( 30 ,? 20 ));
????????????p.Add(
new ?CGPoint( 50 ,? 20 ));
????????????p.Add(
new ?CGPoint( 50 ,? 30 ));
????????????p.Add(
new ?CGPoint( 20 ,? 55 ));
????????????p.Add(
new ?CGPoint( 60 ,? 10 ));

????????????ch?
= ? new ?ConvexHull(p);

?

然后就可以調用ConvexHull的方法GetConvexHull()來獲取凸包了。這個方法返回一個Points對象,表示凸包頂點的集合。下面的代碼可以獲取凸包頂點。

?

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> ???????? private ? Points ?l? = ? new ?List < CGPoint > ();
????????????l?
= ?ch.GetConvexHull();

?

為了測試結果是否正確,我們在窗體上繪制點集中所有的點,然后把凸包頂點用閉合的直線段連接起來。繪制的實現是在Form1的OnPaint方法中,可以參考《C#高級編程(第六版)》

?

測試
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> ???????? private ?PointF[]?pointf;

????????????pointf?
= ? new ?PointF[l.Count];
????????????
for ?( int ?i? = ? 0 ;?i? < ?l.Count;?i ++ )
????????????{
????????????????pointf[i]?
= ? new ?PointF(l[i].X,?l[i].Y);
????????????
}

????????????Graphics?dc?
= ?e.Graphics;
????????????Pen?redPen?
= ? new ?Pen(Color.Red,? 3 );
????????????redPen.Brush?
= ? new ?SolidBrush(Color.Red);

????????????
foreach ?(CGPoint?pt? in ?p)
????????????{
????????????????dc.FillEllipse(redPen.Brush,?
new ?RectangleF(pt.X? - ? 2.5F ,?pt.Y? - ? 2.5F ,? 5 ,? 5 ));
????????????}
????????????Pen?bluePen?
= ? new ?Pen(Color.Blue,? 2 );
????????????dc.DrawPolygon(bluePen,?pointf);

?

測試結果如下圖所示。

?

凸包計算模塊ConvexHull的使用方法 ?

凸包計算模塊ConvexHull的使用方法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 商水县| 铜梁县| 当涂县| 白河县| 金塔县| 金寨县| 龙岩市| 碌曲县| 宜州市| 潜江市| 那曲县| 万盛区| 天津市| 泰安市| 安国市| 泰宁县| 若尔盖县| 疏附县| 朝阳市| 长乐市| 金阳县| 亚东县| 容城县| 读书| 大荔县| 民勤县| 朝阳区| 时尚| 额敏县| 湖北省| 奉新县| 印江| 古交市| 两当县| 钟山县| 河西区| 栾川县| 木里| 淮滨县| 洛隆县| 交城县|