Это проблема выпуклой оболочки. Другие вопросы охватывают аналогичную территорию. Мы можем собрать проблемы построения и вычисления площади здесь для хорошей меры.
Чтобы построить выпуклую оболочку облака точек, мы можем использовать функцию chull
:
library(tidyverse)
data <- tibble(x = runif(50), y = runif(50))
convex_hull <- data %>% slice(chull(x, y))
ggplot(data, aes(x = x, y = y)) +
geom_point() +
geom_polygon(data = convex_hull,
alpha = 0.25)
Библиотека splancs
имеет функцию areapl
для вычисления площади несамопересекающегося многоугольника, например, convex_hull
выше. Следовательно, мы можем сделать:
library(splancs)
as.matrix(convex_hull) %>% areapl