Recursively compute convex hulls, removing outer layers until few points remain.
Value
If
xis a single matrix: returns a list of matrices (one per layer)If
xis a list: returns a list of listsIf
xis a tibble: returns a list extracted from coo column
Details
Computes convex hull layers (onion peeling):
Compute convex hull
Remove hull points
Repeat until ≤ n points remain
Returns a list where each element is a convex hull layer, from outer to inner.
This is not a scalar, so cannot be used with measure().
Examples
get_chull_onion(shapes$cat)
#> [[1]]
#> [,1] [,2]
#> [1,] 232 55
#> [2,] 230 49
#> [3,] 208 19
#> [4,] 202 15
#> [5,] 190 11
#> [6,] 178 9
#> [7,] 166 9
#> [8,] 154 11
#> [9,] 149 13
#> [10,] 143 16
#> [11,] 137 21
#> [12,] 133 27
#> [13,] 130 33
#> [14,] 130 45
#> [15,] 133 104
#> [16,] 134 116
#> [17,] 136 122
#> [18,] 144 139
#> [19,] 148 145
#> [20,] 197 205
#> [21,] 216 226
#> [22,] 221 231
#> [23,] 225 226
#> [24,] 249 195
#>
#> [[2]]
#> [,1] [,2]
#> [1,] 230 60
#> [2,] 224 45
#> [3,] 196 13
#> [4,] 184 10
#> [5,] 172 9
#> [6,] 160 10
#> [7,] 130 39
#> [8,] 133 98
#> [9,] 134 110
#> [10,] 139 128
#> [11,] 142 134
#> [12,] 153 151
#> [13,] 203 210
#> [14,] 212 220
#> [15,] 226 220
#> [16,] 244 199
#> [17,] 248 189
#>
#> [[3]]
#> [,1] [,2]
#> [1,] 224 62
#> [2,] 219 45
#> [3,] 203 22
#> [4,] 180 19
#> [5,] 174 19
#> [6,] 162 21
#> [7,] 150 25
#> [8,] 145 30
#> [9,] 132 51
#> [10,] 133 92
#> [11,] 159 157
#> [12,] 194 199
#> [13,] 209 214
#> [14,] 226 215
#> [15,] 239 204
#> [16,] 244 183
#> [17,] 237 138
#>
#> [[4]]
#> [,1] [,2]
#> [1,] 222 67
#> [2,] 213 47
#> [3,] 198 22
#> [4,] 186 20
#> [5,] 168 20
#> [6,] 156 23
#> [7,] 142 36
#> [8,] 135 57
#> [9,] 134 80
#> [10,] 134 86
#> [11,] 165 160
#> [12,] 192 193
#> [13,] 228 211
#> [14,] 234 208
#> [15,] 238 178
#> [16,] 237 144
#> [17,] 235 132
#>
#> [[5]]
#> [,1] [,2]
#> [1,] 221 73
#> [2,] 209 48
#> [3,] 192 21
#> [4,] 143 41
#> [5,] 136 63
#> [6,] 135 74
#> [7,] 171 162
#> [8,] 191 187
#> [9,] 235 173
#> [10,] 237 156
#> [11,] 237 150
#>
#> [[6]]
#> [,1] [,2]
#> [1,] 221 79
#> [2,] 205 43
#> [3,] 194 42
#> [4,] 182 42
#> [5,] 152 43
#> [6,] 146 44
#> [7,] 136 69
#> [8,] 177 165
#> [9,] 191 182
#> [10,] 235 167
#> [11,] 236 162
#> [12,] 231 126
#>
#> [[7]]
#> [,1] [,2]
#> [1,] 221 85
#> [2,] 208 53
#> [3,] 200 43
#> [4,] 188 42
#> [5,] 158 43
#> [6,] 183 170
#> [7,] 188 176
#> [8,] 227 120
#>
#> [[8]]
#> [,1] [,2]
#> [1,] 206 54
#> [2,] 176 43
#> [3,] 164 43
#> [4,] 224 114
#> [5,] 221 91
#>
#> [[9]]
#> [,1] [,2]
#> [1,] 204 59
#> [2,] 200 56
#> [3,] 170 43
#> [4,] 222 108
#> [5,] 221 97
#>
#> [[10]]
#> [,1] [,2]
#> [1,] 202 65
#> [2,] 196 56
#> [3,] 221 102
#>
#> [[11]]
#> [,1] [,2]
#> [1,] 200 62
#>
get_chull_onion(shapes$cat, n = 5)
#> [[1]]
#> [,1] [,2]
#> [1,] 232 55
#> [2,] 230 49
#> [3,] 208 19
#> [4,] 202 15
#> [5,] 190 11
#> [6,] 178 9
#> [7,] 166 9
#> [8,] 154 11
#> [9,] 149 13
#> [10,] 143 16
#> [11,] 137 21
#> [12,] 133 27
#> [13,] 130 33
#> [14,] 130 45
#> [15,] 133 104
#> [16,] 134 116
#> [17,] 136 122
#> [18,] 144 139
#> [19,] 148 145
#> [20,] 197 205
#> [21,] 216 226
#> [22,] 221 231
#> [23,] 225 226
#> [24,] 249 195
#>
#> [[2]]
#> [,1] [,2]
#> [1,] 230 60
#> [2,] 224 45
#> [3,] 196 13
#> [4,] 184 10
#> [5,] 172 9
#> [6,] 160 10
#> [7,] 130 39
#> [8,] 133 98
#> [9,] 134 110
#> [10,] 139 128
#> [11,] 142 134
#> [12,] 153 151
#> [13,] 203 210
#> [14,] 212 220
#> [15,] 226 220
#> [16,] 244 199
#> [17,] 248 189
#>
#> [[3]]
#> [,1] [,2]
#> [1,] 224 62
#> [2,] 219 45
#> [3,] 203 22
#> [4,] 180 19
#> [5,] 174 19
#> [6,] 162 21
#> [7,] 150 25
#> [8,] 145 30
#> [9,] 132 51
#> [10,] 133 92
#> [11,] 159 157
#> [12,] 194 199
#> [13,] 209 214
#> [14,] 226 215
#> [15,] 239 204
#> [16,] 244 183
#> [17,] 237 138
#>
#> [[4]]
#> [,1] [,2]
#> [1,] 222 67
#> [2,] 213 47
#> [3,] 198 22
#> [4,] 186 20
#> [5,] 168 20
#> [6,] 156 23
#> [7,] 142 36
#> [8,] 135 57
#> [9,] 134 80
#> [10,] 134 86
#> [11,] 165 160
#> [12,] 192 193
#> [13,] 228 211
#> [14,] 234 208
#> [15,] 238 178
#> [16,] 237 144
#> [17,] 235 132
#>
#> [[5]]
#> [,1] [,2]
#> [1,] 221 73
#> [2,] 209 48
#> [3,] 192 21
#> [4,] 143 41
#> [5,] 136 63
#> [6,] 135 74
#> [7,] 171 162
#> [8,] 191 187
#> [9,] 235 173
#> [10,] 237 156
#> [11,] 237 150
#>
#> [[6]]
#> [,1] [,2]
#> [1,] 221 79
#> [2,] 205 43
#> [3,] 194 42
#> [4,] 182 42
#> [5,] 152 43
#> [6,] 146 44
#> [7,] 136 69
#> [8,] 177 165
#> [9,] 191 182
#> [10,] 235 167
#> [11,] 236 162
#> [12,] 231 126
#>
#> [[7]]
#> [,1] [,2]
#> [1,] 221 85
#> [2,] 208 53
#> [3,] 200 43
#> [4,] 188 42
#> [5,] 158 43
#> [6,] 183 170
#> [7,] 188 176
#> [8,] 227 120
#>
#> [[8]]
#> [,1] [,2]
#> [1,] 206 54
#> [2,] 176 43
#> [3,] 164 43
#> [4,] 224 114
#> [5,] 221 91
#>
#> [[9]]
#> [,1] [,2]
#> [1,] 204 59
#> [2,] 200 56
#> [3,] 170 43
#> [4,] 222 108
#> [5,] 221 97
#>
#> [[10]]
#> [,1] [,2]
#> [1,] 200 62
#> [2,] 196 56
#> [3,] 221 102
#> [4,] 202 65
#>
