У меня есть задача сделать для университета, и я не знаю, как это сделать. Могу ли я попросить вашей помощи. Я не могу использовать дополнительные пакеты: (
У нас есть данные с точками
xi=(xi1, xi2), for i=1,…,n, where n is natural number
.
Моя задача:
Написать функцию, которая принимает набор точек и задает набор точек, являющихся вершинами выпуклой оболочки данного набора точек.
Написать функцию (или набор функций), которая для заданного набора точек на плоскости создает граф, содержащий выпуклую оболочку данных точек и других заданных точек. Функция должна иметь возможность указывать стиль рисования выпуклой оболочки и точек.
Я не могу установить пакеты.
Пример решения:
###Creating a set of random points on the plane
pts <- list( rnorm(2))
for(k in 1:20){ pts <- c( pts, list( rnorm(2))) }
pts
Набор случайных точек
[[1]]
[1] -0.2895047 0.3938896
[[2]]
[1] 0.5187255 0.1691874
[[3]]
[1] 0.2310706 0.1311234
[[4]]
[1] -0.44087647 0.07283041
[[5]]
[1] 0.9438115 -1.1034222
[[6]]
[1] 0.9342882 0.9032668
[[7]]
[1] -0.3655531 1.0130261
[[8]]
[1] -2.268272 -1.278624
[[9]]
[1] 2.021061 -2.705479
[[10]]
[1] -0.9460602 -0.1185306
[[11]]
[1] -1.4656782 -0.8536016
[[12]]
[1] 1.0060148 -0.9254827
[[13]]
[1] -0.1493196 1.3880502
[[14]]
[1] 0.4846496 -0.8680879
[[15]]
[1] -0.03187148 1.03490764
[[16]]
[1] 0.3078759 0.8329899
[[17]]
[1] 1.225831 -1.492936
[[18]]
[1] -1.64684601 -0.06100802
[[19]]
[1] -0.08985374 0.62738174
[[20]]
[1] -0.8206645 0.3503755
[[21]]
[1] -0.1374857 0.4190813
Я должен создать функцию listpoints (pts), которая перечисляет точки выпуклой оболочки
convHull( pts)
[[1]]
[1] 2.021061 -2.705479
[[2]]
[1] -2.268272 -1.278624
[[3]]
[1] -1.64684601 -0.06100802
[[4]]
[1] -0.1493196 1.3880502
[[5]]
[1] 0.9342882 0.9032668
[[6]]
[1] 2.021061 -2.705479
null device
1
И создать простой сюжет
png( "./fig1.png")
plotPoints( pts, col = "white")
addPoints( convHull( pts), pch = 20, cex = 2, col = "red")
addRegion( convHull( pts), col = rgb(1, 0, 0, 0.1), border = "red")
addPoints( pts, pch = 20, col = "black")
dev.off()
![enter image description here](https://i.stack.imgur.com/E1vQr.png)