- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这意味着排除任何 interiorPolygons
的区域。
一旦有了外部 points
多边形的质心,如何(即以 Objective-C 示例的形式)通过减法 interiorPolygons
?或者是否有更优雅的方法来一次计算质心?
如果您帮助代码运行,它将开源 (WIP here)。
可能有帮助:
最佳答案
今天想想,将每个内部质心按面积加权添加到外部质心会得到合理的结果,这在定性上是有意义的。 (左侧具有内部多边形(孔)的正方形会将质心向右移动,与孔的面积成正比。)
不按比例:
- (MKMapPoint)calculateCentroid
{
switch (self.pointCount) {
case 0: return MKMapPointMake(0.0,
0.0);
case 1: return MKMapPointMake(self.points[0].x,
self.points[0].y);
case 2: return MKMapPointMake((self.points[0].x + self.points[1].x) / 2.0,
(self.points[0].y + self.points[1].y) / 2.0);
}
// onward implies pointCount >= 3
MKMapPoint centroid;
MKMapPoint *previousPoint = &(self.points[self.pointCount-1]); // for i=0, wrap around to the last point
for (NSUInteger i = 0; i < self.pointCount; ++i) {
MKMapPoint *point = &(self.points[i]);
double delta = (previousPoint->x * point->y) - (point->x * previousPoint->y); // x[i-1]*y[i] + x[i]*y[i-1]
centroid.x += (previousPoint->x + point->x) * delta; // (x[i-1] + x[i]) / delta
centroid.y += (previousPoint->y + point->y) * delta; // (y[i-1] + y[i]) / delta
previousPoint = point;
}
centroid.x /= 6.0 * self.area;
centroid.y /= 6.0 * self.area;
// interiorPolygons are holes (subtractive geometry model)
for (MKPolygon *interiorPoly in self.interiorPolygons) {
if (interiorPoly.area == 0.0) {
continue; // avoid div-by-zero
}
centroid.x += interiorPoly.centroid.x / interiorPoly.area;
centroid.y += interiorPoly.centroid.y / interiorPoly.area;
}
return centroid;
}
关于ios - 找到 MKPolygon 的精确质心(作为 MKMapPoint),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755865/
假设我有一个由四个 CLLocationCooperative2D 点组成的正方形,这些点的单位为经纬度,我想找到该正方形的面积(以米为单位)。我将 CLLocationCooperative2D 点
我已经在 iPhone 应用程序的 Swift2.0 中成功地在本地 mapView 上绘制了一个 MKPolygon。我导入了 CLLocationCordinate2D,结果非常完美。 然而,我的
在理解 MKMapPoint 时,任何人都可以指出正确的方向吗? 我知道这与在二维表面上放置地球表面有关。但是我不明白每个“点”是如何测量的? 谁能给我一个代码示例? 最佳答案 没什么可说的..只是一
我已将 MapView 上的经度和纬度转换为 MKMapPoint。然后我想使用 imageViews center 属性将 imageView 移动到该点。看来我需要以某种方式将 MKMapPoin
任何人都可以解释如何将 MKMapPoint 转换为 CGPoint 吗?我需要在 UIView 上使用纬度和经度绘制路径。 最佳答案 接受的答案将 CLLocationCoordinate2D 转换
根据我的阅读,这需要一些我不擅长的复杂数学。所以,我在这里问。 有人有将 MKMapPoint 或 CLLocationCooperative2D 转换为 UTM 值的经验吗?我找到了这个资源( ht
我有以下代码: MKMapRect mRect = self.mapView.visibleMapRect; MKMapPoint eastMapPoint = MKMapPointMake(MK
这意味着排除任何 interiorPolygons 的区域。 一旦有了外部 points 多边形的质心,如何(即以 Objective-C 示例的形式)通过减法 interiorPolygons?或者
我想创建一个 MKPolygon 来显示在 MKMapView 上。我的问题是我不知道该怎么做。 我知道要创建一个 MKPolygon 我必须创建一堆 MKMapPoint 结构并将它们放入一个数组中
假设您不知道这些点在哪里(与第二个点相比,第一个点可以位于下方或上方,更多位于左侧或右侧),您将如何以最简单的方式构建具有 2 个 MKMapPoints 的 MKMapRect . 最佳答案 这是一
我想将 MKMapPoint 转换为 NSValue。在 Objective-C 中,我可以使用以下语句来完成: MKMapPoint point = MKMapPointForCoordinate(
我试图在 MKMapView 上的 2 个坐标之间画线,我有一个数组来保留所有 poi,所以我有这段代码 var pointArr: CMutablePointer = nil 我的问题是如何给 po
你好,对于基于导航的应用程序,我需要从 MKMapView 的坐标或 MKMapPoint 获取 CGPoint。我想在这些点之间画一条线,而不是折线。 我对 MKPolyLine 和其他自定义折线了
我正在使用 Apple 的 Footprint: Indoor Positioning with Core Location sample code构建移动应用程序。此代码采用 Swift 3.0,我
我是一名优秀的程序员,十分优秀!