# Cerchio che passa per P1, P2, P3
# Per punti particolari ci possono essere metodi migliori
# Per procedere in generale possiamo imporre che il cerchio
# di centro e raggio generici passi per essi
# Equazione cerchio di centro (a,b) e raggio r
# (x-a)^2+(y-b)^2=r^2, x^2+y^2-2*a*x-2*b*y+c=0, r=sqrt(a^2+b^2-c)
# Per risolvere il sistema lineare a 3 equazioni (ottenuto prendendo
# come x,y una volta P1, un'altra P2, un'altra P3) posso usare il comando
# di R solve(M,N) - M: la matrice delle eq., N: colonna dei termini noti
# Il sistema con incognite a,b,c è  2*x*a + 2*y*b -1*c = x^2+y^2
# con x,y pari a P1, a P2 e P3.
x1 <- -6; y1 <- 0;  x2 <- 8; y2 <- 2;  x3 <- 4; y3 <- -5
# La matrice è introdotta colonna per colonna
ma <- matrix(data=c(2*x1,2*x2,2*x3,2*y1,2*y2,2*y3,-1,-1,-1), nrow=3,ncol=3)
noti <- matrix(data=c(x1^2+y1^2,x2^2+y2^2,x3^2+y3^2),nrow=3,ncol=1)
abc <- solve(ma,noti)
raggio <- sqrt(abc[1]^2+abc[2]^2-abc[3]); centro <- c(abc[1],abc[2])
centro; raggio
# Rappresentazione e controllo grafico:
plot(c(-10,10),c(-10,10),type="n",xlab="", ylab="", asp=1)
abline(v=axTicks(1), h=axTicks(2), col="blue", lty=3)
# punti e centro
points(x1,y1); points(x2,y2); points(x3,y3)
points(centro[1],centro[2])
# cerchio
symbols(centro[1],centro[2], circles=raggio, inches=FALSE, add=TRUE)