ios - 计算多边形的最小内切圆

标签 ios polygon cllocation polygons

我在 iOS 上工作,有一个带有地理坐标的多边形,例如 (-27.589846, 151.982112)(-27.590174, 151.983045)(-27.590773, 151.982680)(-27.590602, 151.981908)。

我想知道它的外圆内圆:圆心和半径?

有什么办法吗?

谢谢?

enter image description here

最佳答案

您可以使用它来确定非自相交多边形的中心:

#include <iostream>

struct Point2D
{
    double x;
    double y;
};

Point2D compute2DPolygonCentroid(const Point2D* vertices, int vertexCount)
{
    Point2D centroid = {0, 0};
    double signedArea = 0.0;
    double x0 = 0.0; // Current vertex X
    double y0 = 0.0; // Current vertex Y
    double x1 = 0.0; // Next vertex X
    double y1 = 0.0; // Next vertex Y
    double a = 0.0;  // Partial signed area

    // For all vertices except last
    int i=0;
    for (i=0; i<vertexCount-1; ++i)
    {
        x0 = vertices[i].x;
        y0 = vertices[i].y;
        x1 = vertices[i+1].x;
        y1 = vertices[i+1].y;
        a = x0*y1 - x1*y0;
        signedArea += a;
        centroid.x += (x0 + x1)*a;
        centroid.y += (y0 + y1)*a;
    }

    // Do last vertex
    x0 = vertices[i].x;
    y0 = vertices[i].y;
    x1 = vertices[0].x;
    y1 = vertices[0].y;
    a = x0*y1 - x1*y0;
    signedArea += a;
    centroid.x += (x0 + x1)*a;
    centroid.y += (y0 + y1)*a;

    signedArea *= 0.5;
    centroid.x /= (6.0*signedArea);
    centroid.y /= (6.0*signedArea);

    return centroid;
}

int main()
{
    Point2D polygon[] = {{0.0,0.0}, {0.0,10.0}, {10.0,10.0}, {10.0,0.0}};
    size_t vertexCount = sizeof(polygon) / sizeof(polygon[0]);
    Point2D centroid = compute2DPolygonCentroid(polygon, vertexCount);
    std::cout << "Centroid is (" << centroid.x << ", " << centroid.y << ")\n";
}

要获得半径然后确定每个顶点的中心之间的距离并选择最大的一个!

关于ios - 计算多边形的最小内切圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140754/

相关文章:

ios - 在 swift Xctest 中测试 Firebase 类

r - Shiny 和 ggplot2 - 教程

ios - PHAsset CLLocation 未提供与照片应用相同的位置

ios - 计算 CLLocation 数组的中心坐标点

iphone - CLLocationManager保存缓存值

ios - JASidePanels 示例 2 使用 Storyboard : crash

ios - 如何重用 NSString 方法?

ios - 通过索引获取 NSDictionary 键?

javascript - 放大 GeoJSON 多边形

c++ - Concave GL_POLYGON不上色?