一些帮助处理多边形的类方法,例如:找到多边形的中心(质心);测试一个点是否在多边形内部。
示例
func updateCentroid(){
self.centroidPointView.center =
YZPolygonHelper.findCentroidForNumberOfPoints(
self.controlPointViewsArray.count,
xAtIndexBlock: { (UInt idx) -> CGFloat in
let view:ControlPointView = self.controlPointViewsArray[idx]
return view.center.x
},
yAtIndexBlock:{ (UInt idx) -> CGFloat in
let view:ControlPointView = self.controlPointViewsArray[idx]
return view.center.y
}
)
}
var result:Bool =
YZPolygonHelper.isPointContained(
point,
inNumberOfPoints: pointsArray.count,
xAtIndexBlock: { (idx:Int) -> CGFloat in
return pointsArray[idx].x
},
yAtIndexBlock: { (idx:Int) -> CGFloat in
return pointsArray[idx].y
}
)
算法由 Paul Bourke 提供,网址为 http://paulbourke.net/geometry/polygonmesh/
根据 'squeamish ossifrage' 提供的 C 代码修改,网址为 http://stackoverflow.com/users/1679849/squeamish-ossifrage
从页面 http://stackoverflow.com/questions/19766485/how-to-calculate-centroid-of-polygon-in-c 中获取