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

d) Show information about the circle: center and radius.

For the coding, use:

– camel notation

– in-program comments

– logic

– accuracy

– efficiency

## Expert Answer

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.

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

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

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

def calculateradius(a1,a2,x,y):

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

radius=radius**(1/2.0)

return radius

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):

return (“lies in 1st Quadrant”)

elif(x<0 and y>0):

return (“lies in 2nd Quadrant”)

elif(x<0 and y<0):

return (“lies in 3rd Quadrant”)

elif(x>0 and y<0):

return (“lies in 4th Quadrant”)

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

radius=calculateradius(p1.x,p1.y,x,y) #calculate the radius

print (“Radius of the circle is: “,radius) #print the radius