在 PaperJS 中找到闭合路径(多边形)的质心

问题描述 投票:0回答:2

我已经从Python的Shapely切换到JavaScript的PaperJS。我想找到多边形或闭合路径的质心,因为它被称为 PaperJS。有没有快速的方法来做到这一点还是我必须编写自己的算法?

javascript geometry paperjs
2个回答
0
投票

你看过 poligon 路径创建的边界框吗?

在 Paperjs 中创建的每个项目都有一个 bounds 属性,它返回一个 Rectangle 对象,这个 Rectangle 对象将有一个 center 属性,返回对象的中心

Item.bounds

希望有帮助


0
投票

我认为在 paperjs 中没有办法做到这一点。

path.bounds.center
不适用于非凸多边形(具有向内角的多边形)。这是因为多边形的质心可能并不正好位于其边界框的中心。

但是,有一个名为 Ploylabel 的库可以做到这一点。 这是一个用法示例:

    let decagon = new Path.RegularPolygon(new Point(200, 70), 10, 50);
    let decagon_segments = decagon.segments.map(segment =>[segment.point.x, segment.point.y]);
    let centroid = polylabel([path_segments]);

在使用上述代码之前,请确保安装 paperjs 和 polylabel。

© www.soinside.com 2019 - 2024. All rights reserved.