KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a pair of points and I would like to find a circles of known r that are determined by these two points. I will be using this in a simulation and possible space for x and y have boundaries (say a box of -200, 200). It is known that square of radius is (x-x1)^2 + (y-y1)^2 = r^2 (x-x2)^2 + (y-y2)^2 = r^2 I would now like to solve this non-linear system of equations to get two potential circle centers. I tried using package BB . Here is my feeble attempt which gives only one point. What I would like to get is both possible points. Any pointers into right direction will be met with complimentary beer on first possible occasion. 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 ) Graphically you can see this with the following code, but you will need some extra packages. 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)
Tags (comma-separated)
Save Edits
Cancel