Basic Calculation for WPF Polygon: Area and Centroid
System.Windows.Shapes.Shape命名空间提供对可以在XAML或代码中使用的Polygon对象的访问。
是否存在一个Microsoft库,该库提供有关多边形之类的面积或中心的一些非常基本的计算?
我的偏好是不要自己重新实现这些功能或复制数学/几何库。
似乎没有什么可以计算质心,但基于
1 2 3 4 5 6 7 8 9 10 |
我在这篇文章中发布了一些基于linq的几何运算:
如何用自身压缩一个IEnumerable
我发布的质心计算与@Thomas Levesque发布的质心计算不同。我从Wikipedia-Centroid获得。他的看上去比我发布的简单得多。
这是我的算法(它通过上面的链接使用了SignedArea和Pairwise):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public static Position Centroid(IEnumerable<Position> pts) { double a = SignedArea(pts); var c = pts.Pairwise((p1, p2) => new { x = (p1.X + p2.X) * (p1.X * p2.Y - p2.X * p1.Y), y = (p1.Y + p2.Y) * (p1.X * p2.Y - p2.X * p1.Y) }) .Aggregate((t1, t2) => new { x = t1.x + t2.x, y = t1.y + t2.y }); return new Position(1.0 / (a * 6.0) * c.x, 1.0 / (a * 6.0) * c.y); } |
在该链接上还有一些其他算法可能会有用。