пытаясь нарисовать круги на основе расстояния между точками - PullRequest
6 голосов
/ 12 июня 2011

Я пытаюсь нарисовать несколько кругов, и я как бы надеялся, что они пересекутся с некоторыми точками, увы ...

library(maptools)
library(plotrix)
xy <- matrix(runif(20, min = -100, max = 100), ncol = 2)
distance <- spDistsN1(xy, xy[1, ])
plot(0,0, xlim = c(-100, 100), ylim = c(-100, 100), type = "n")
points(data.frame(xy))
points(xy[1, 1], xy[1, 2], pch = 16)
draw.circle(xy[1, 1], xy[1, 2], radius = distance)

Приведенный выше код выполняет следующие действия:

  • Создайте 10 случайных точек и выберите одну (первую) точку, которая будет служить «якорем».
  • Рассчитайте расстояние от якоря до всех других точек.Это будет наш «радиус»
  • Нарисуйте круги вокруг точки привязки, используя рассчитанные расстояния для радиусов.
  • Поцарапайте голову, почему круги не пересекаются с точками, которые использовались для вычисления радиусов.circles don't intersect with points used to calculate distance

1 Ответ

9 голосов
/ 12 июня 2011

Это старая проблема с соотношением сторон, которая возникает время от времени, когда люди рисуют эллипсы, круги и т. Д.

Замена MASS::eqscplot для plot ( edit : или использование asp=1: см. ?par), кажется, решает проблему.

...