Lecture Notes on 14 Aug 2013 import math class Point (object): # initializer def __init__ (self, x = 0, y = 0): self.x = x self.y = y # get distance def dist (self, p): return math.hypot (self.x - p.x, self.y - p.y) # string representation def __str__ (self): return '(' + str(self.x) + ', ' + str(self.y) + ')' class Circle (object): # initializer def __init__ (self, x = 0, y = 0, radius = 1): self.center = Point (x, y) self.radius = radius # compute area def area (self): return math.pi * self.radius * self.radius # compute circumference def circumference (self): return 2.0 * math.pi * self.radius # returns True if Circle c is strictly inside def is_inside (self, c): return (self.radius > ((self.center.dist (c.center)) + c.radius)) # returns True if Circle c intersects def does_intersect (self, c): return (self.center.dist (c.center) < (self.radius + c.radius)) # string representation def __str__ (self): return 'Center = ' + str(self.center) + ' Radius = ' + str(self.radius) class Rectangle (object): # initializer def __init__ (self, x1 = 0, y1 = 1, x2 = 1, y2 = 0): self.UL = Point (x1, y1) self.LR = Point (x2, y2) # compute area def area (self): return ((self.LR.x - self.UL.x) * (self.UL.y - self.LR.y)) # compute perimeter def perimeter (self): return (2 * ((self.LR.x - self.UL.x) + (self.UL.y - self.LR.y))) # returns True of a point is strictly inside def is_inside (self, p): return ((p.x > self.UL.x) and (p.x < self.LR.x) and (p.y < self.UL.y)\ and (p.y > self.LR.y)) def is_inside (self, r): return self.is_inside (r.UL) and self.is_inside (r.LR) def main(): # Create Point objects p = Point (1, 2) print (p) q = Point (3, 4) print (q) p.x = 6 p.y = 7 print (p) print (p.dist(q)) # Create Circle objects circleC = Circle (1, 1, 2) print (circleC) print (circleC.area()) main()