• 凸包计算模块ConvexHull的使用方法


    开发了一个模块,可用来计算平面一些点所构成的凸包。模块名为ConvexHull.dll。

    使用方法是这样的,新建一个WinForm工程(控制台工程也行,只是输出结果不大直观),引用ConvexHull.dll,然后在Form1代码中引用模块的命名空间:

    using Hiquotion.ComputingGeometry;

    模块中包含一个类ConvexHull,用这个类声明一个对象,然后用平面点的集合类(Points)实例化:

    实例化
            private ConvexHull ch;

            
    private Points p = new Points();

                p.Add(
    new CGPoint(1010));
                p.Add(
    new CGPoint(3050));
                p.Add(
    new CGPoint(1030));
                p.Add(
    new CGPoint(2070));
                p.Add(
    new CGPoint(3020));
                p.Add(
    new CGPoint(5020));
                p.Add(
    new CGPoint(5030));
                p.Add(
    new CGPoint(2055));
                p.Add(
    new CGPoint(6010));

                ch 
    = new ConvexHull(p);

    然后就可以调用ConvexHull的方法GetConvexHull()来获取凸包了。这个方法返回一个Points对象,表示凸包顶点的集合。下面的代码可以获取凸包顶点。

            private Points l = new List<CGPoint>();
                l 
    = ch.GetConvexHull();

    为了测试结果是否正确,我们在窗体上绘制点集中所有的点,然后把凸包顶点用闭合的直线段连接起来。绘制的实现是在Form1的OnPaint方法中,可以参考《C#高级编程(第六版)》

    测试
            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.5F55));
                }
                Pen bluePen 
    = new Pen(Color.Blue, 2);
                dc.DrawPolygon(bluePen, pointf);

    测试结果如下图所示。

     


    作者:海阔天

    欢迎转载!转载请注明出处:

    www.cnblogs.com/yxsylyh

  • 相关阅读:
    高阶函数 map
    高阶函数_filter
    sort和sorted方法的使用
    一个函数作为另外一个函数的参数
    匿名函数
    jenkins+Xcode+蒲公英实现ipa自动打包发布全攻略
    iOS 画贝塞尔曲线 连续曲线 平滑曲线 曲线图表
    基于WebRTC实现iOS端音频降噪功能
    苹果ios音频的回声消除处理
    iOS实现录音功能
  • 原文地址:https://www.cnblogs.com/yxsylyh/p/UsingConvexHull.html
Copyright © 2020-2023  润新知