# Answered! Write a program in Python with the following: a) Given 3 points (x, y):…

Write a program in Python with the following:

a) Given 3 points (x, y):

P1(50.0, 70.0)

P2(-30.0, 10.0)

P3(40.0, -40.0)

b) Calculate the circle that passes through these 3 points;

c) Show information about the points; and

For the coding, use:

– camel notation

– logic

– accuracy

– efficiency

The implementation is totally mathematical, I have used a class point to declare a point and then rest are functions for calculating the different values. Consider a system of three points $(a1,a2),(b1,b2),(c1,c2)$ .

Now If you know some mathematics then you can easily generate the equation of the circle. Here I am writing three equations which help us to determine the equation of the circle.

$d=(a1-b1)(b2-c2)-(b1-c1)(a2-b2)$

If d is zero, the points lie on the same line.

$u=\frac{a1^2-b1^2+a2^2-b2^2}{2}$

$v=\frac{b1^2-c1^2+b2^2-c2^2}{2}$

Now, that we have u and v we can go on to have the center i.e. x and y by the following equation

$x=\frac{u(b2-c2)-v(a2-b2)}{d}$

$y=\frac{v(a1-b1)-u(b1-c1)}{d}$

I have implemented that only in the program. Here you go with the program:

class Point :
def __init__( self, x = 0., y = 0 ):
self.x = x #x value of a point
self.y = y # y value of a point

def calculated(a1,a2,b1,b2,c1,c2):
d=((a1-b1)*(b2-c2)) – ((b1-c1)*(a2-b2)) #caculated according to the equation
return d #if zero then no circle can be formed

def calculateu(a1,a2,b1,b2):
u=(a1*a1)-(b1*b1) + (a2*a2)-(b2*b2) #caculated according to the equation
u=u/2
return u

def calculatev(b1,b2,c1,c2):
v=(b1*b1)-(c1*c1) + (b2*b2)-(c2*c2) #caculated according to the equation
v=v/2
return v

def calculatex(u,v,a2,b2,c2,d):
x=u*(b2-c2) – v*(a2-b2) #x coordinate of the circle
x=x/d
return x

def calculatey(u,v,a1,b1,c1,d):
y=v*(a1-b1) – u*(b1-c1) #y coordinate of the circle
y=y/d
return y

radius=(a1-x)*(a1-x)+(a2-y)*(a2-y) #radius is easy calculation just pick any point and apply the distance formula

def info(x,y):
if(x==0 and y==0): # checking the quadrants of the point
return (“lies on the Origin”)
elif(x>0 and y>0):
elif(x<0 and y>0):
elif(x<0 and y<0):
elif(x>0 and y<0):

if __name__ == ‘__main__’ :
p1 = Point(50.0,70.0)
p2 = Point(-30.0,10.0) #initialize the points to some value
p3 = Point(40.0,-40.0)
print (“Point p1”, info(p1.x,p1.y))
print (“Point p2”,info(p2.x,p2.y)) #information about the points
print (“Point p3”,info(p3.x,p3.y))

d=calculated(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y) #follow the steps in the algo
if(d==0):
print (“Points lie on the same line”)
sys.exit() #if lie on a line then exit
u=calculateu(p1.x,p1.y,p2.x,p2.y)
v=calculatev(p2.x,p2.y,p3.x,p3.y)
x=calculatex(u,v,p1.y,p2.y,p3.y,d)
y=calculatey(u,v,p1.x,p2.x,p3.x,d) #circle calucated
print (“Coordinates of the circle are x:”,x,” y:”,y) #center of the circle