let points = [[162, 332], [182, 299], [141, 292], [158, 264], ... ];
let h = Hull(concavity: 50)
let hull = h.hull(points, nil)
public func hull(_ pointSet: [Any], _ concavity: Double?, _ format: [String]?) -> [Any] {
- 1st param - array of coordinates in format:
[Any]
,[Any]
can be [[Int]], [[Double]], [[String: Int]], [[String: Double]]; - 2nd param - concavity.
1
- thin shape.Infinity
- convex hull. By default20
; - 3rd param - the format of the array of coordinates For example:
["lng", "lat"]
if you have["lng": x, "lat": y]
points. If your are using [[Int]] or [[Double]], the value can be nil
Concavity determines the hull's maximum edge length.
- Calculate the diameter of your dataset.
- Start experimenting with:
concavity = diameter / 5
.
This step by step guide was taken as the original code from https://github.com/AndriiHeonia/hull
Let's see step by step what happens when you call hull()
function:
-
Hull.js takes your source points of the shape:
-
Builds convex hull:
-
After that, the edges flex inward (according to the `concavity` param). For example:
ConcaveHull is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "ConcaveHull"