Tengo un par de puntos y me gustaría encontrar un círculo de r conocido que esté determinado por estos dos puntos. Voy a usar esto en una simulación y espacio posible para x
y y
tienen límites (por ejemplo, un cuadro de -200, 200).determinar el centro del círculo basado en dos puntos (radio conocido) con resolver/optim
It is known ese cuadrado del radio es
(x-x1)^2 + (y-y1)^2 = r^2
(x-x2)^2 + (y-y2)^2 = r^2
ahora me gustaría resolver este sistema no lineal de ecuaciones para obtener dos centros potenciales círculo. Intenté usar el paquete BB
. Aquí está mi intento débil que da solo un punto. Lo que me gustaría obtener son ambos puntos posibles. Cualquier puntero en la dirección correcta se encontrará con cerveza de cortesía en la primera ocasión posible.
library(BB)
known.pair <- structure(c(-46.9531139599816, -62.1874917150412, 25.9011462171242,
16.7441676243879), .Dim = c(2L, 2L), .Dimnames = list(NULL, c("x",
"y")))
getPoints <- function(ps, r, tr) {
# get parameters
x <- ps[1]
y <- ps[2]
# known coordinates of two points
x1 <- tr[1, 1]
y1 <- tr[1, 2]
x2 <- tr[2, 1]
y2 <- tr[2, 2]
out <- rep(NA, 2)
out[1] <- (x-x1)^2 + (y-y1)^2 - r^2
out[2] <- (x-x2)^2 + (y-y2)^2 - r^2
out
}
slvd <- BBsolve(par = c(0, 0),
fn = getPoints,
method = "L-BFGS-B",
tr = known.pair,
r = 40
)
Gráficamente, puede ver esto con el siguiente código, pero necesitará algunos paquetes adicionales.
library(sp)
library(rgeos)
plot(0,0, xlim = c(-200, 200), ylim = c(-200, 200), type = "n", asp = 1)
points(known.pair)
found.pt <- SpatialPoints(matrix(slvd$par, nrow = 1))
plot(gBuffer(found.pt, width = 40), add = T)
ADENDA
Gracias a todos por sus valiosos comentarios y código. Proporciono tiempos para las respuestas de los carteles que felicitaron sus respuestas con el código.
test replications elapsed relative user.self sys.self user.child sys.child
4 alex 100 0.00 NA 0.00 0 NA NA
2 dason 100 0.01 NA 0.02 0 NA NA
3 josh 100 0.01 NA 0.02 0 NA NA
1 roland 100 0.15 NA 0.14 0 NA NA
hacer en los puntos se encuentran en la circunferencia? – James
Es posible resolver el sistema de ecuaciones con las manos y usar las fórmulas – MBo
@James, sí, los puntos se encuentran en algún lugar de la circunferencia. He actualizado mi respuesta que muestra el resultado. –