使用坐标计算2D形状的最小外接矩形我有一个解决方案,它使用空间数据来表示地图上的一组点。我需要使用表示集群范围的坐标找到可以包含所述点集群的最小边界矩形。是否有一个简单的算法能够计算这个,或者C#中是否有任何内置函数来实现这个。我知道NetTopologySuite,但我不确定如何/是否可以使用它来实现相同的目标。我有一个坐标列表,所以我需要将这个字符串列表传递给它并获取MBR。最简单的解决方案,我假设您最有可能寻找的是计算轴对齐的边界框,这只是找到最小/最大x和y值并为这些值构造一个框的情况.鉴于您还没有发布表示几何的类型,我会给您伪代码...typepoint{floatx;浮动y;}typebox{pointtopleft;指向正上方;点左下角;点右下角;}functionbounding_box(points){xmin=min(points.x)xmax=max(points.x)ymin=min(points.y)ymax=max(points.y)returnnewbox{topleft={x=xmin,y=ymax},topright={x=xmax,y=ymax},bottomleft={x=xmin,y=ymin},bottomright={x=xmax,y=ymin}};}所以给出这些:point[]points=[[x=-2,y=0],[x=1,y=2],[x=1,y=1],[x=-1,y=-2]];框边界=bounding_box(points);以下所有情况总是如此:bounds.topleft==[x=-2,y=2];bounds.topright==[x=1,y=2];bounds.bottomleft==[x=-2,y=-2];bounds.bottomright==[x=-1,y=-2];当然,如果坐标系的最低坐标在顶部(例如典型的显示器)——那么您必须反转计算;或者先在对象空间中计算结果,然后再转换到逻辑空间。请注意,我选择了代表所有四个角的框类型,以防您将来决定更新为任意对齐的框(尽管对于相同的符号,您可以为此使用点+2向量)。一种可能但简单的方法可能是这样的:publicRectangleTest(Listpoints){//如有必要,请在此处添加检查以确保点不为空,//并且它至少包含一个(或者两个?)元素varminX=points.Min(p=>pX);varminY=points.Min(p=>pY);varmaxX=points.Max(p=>pX);varmaxY=points.Max(p=>pY);返回新矩形(新点(minX,minY),新尺寸(maxX-minX,maxY-minY));}这当然假设您正在寻找垂直和水平对齐的矩形。因此,如果您正在寻找尽可能小的矩形,无论它如何旋转,这都不适合您。在http://www.ceometric.com/products/g.html尝试G#它具有最小面积和最小周长外接矩形和最小外接圆。以上就是C#学习教程:利用坐标计算二维形状的最小外接矩形。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
