📚 The CoCalc Library - books, templates and other resources
License: OTHER
"""This module contains a code example related to12Think Python, 2nd Edition3by Allen Downey4http://thinkpython2.com56Copyright 2015 Allen Downey78License: http://creativecommons.org/licenses/by/4.0/9"""1011from __future__ import print_function, division1213import copy1415from Point1 import Point, Rectangle, print_point16from Point1_soln import distance_between_points171819class Circle:20"""Represents a circle.2122Attributes: center, radius23"""242526def point_in_circle(point, circle):27"""Checks whether a point lies inside a circle (or on the boundary).2829point: Point object30circle: Circle object31"""32d = distance_between_points(point, circle.center)33print(d)34return d <= circle.radius353637def rect_in_circle(rect, circle):38"""Checks whether the corners of a rect fall in/on a circle.3940rect: Rectangle object41circle: Circle object42"""43p = copy.copy(rect.corner)44print_point(p)45if not point_in_circle(p, circle):46return False4748p.x += rect.width49print_point(p)50if not point_in_circle(p, circle):51return False5253p.y -= rect.height54print_point(p)55if not point_in_circle(p, circle):56return False5758p.x -= rect.width59print_point(p)60if not point_in_circle(p, circle):61return False6263return True646566def rect_circle_overlap(rect, circle):67"""Checks whether any corners of a rect fall in/on a circle.6869rect: Rectangle object70circle: Circle object71"""72p = copy.copy(rect.corner)73print_point(p)74if point_in_circle(p, circle):75return True7677p.x += rect.width78print_point(p)79if point_in_circle(p, circle):80return True8182p.y -= rect.height83print_point(p)84if point_in_circle(p, circle):85return True8687p.x -= rect.width88print_point(p)89if point_in_circle(p, circle):90return True9192return False939495def main():96box = Rectangle()97box.width = 100.098box.height = 200.099box.corner = Point()100box.corner.x = 50.0101box.corner.y = 50.0102103print(box.corner.x)104print(box.corner.y)105106circle = Circle107circle.center = Point()108circle.center.x = 150.0109circle.center.y = 100.0110circle.radius = 75.0111112print(circle.center.x)113print(circle.center.y)114print(circle.radius)115116print(point_in_circle(box.corner, circle))117print(rect_in_circle(box, circle))118print(rect_circle_overlap(box, circle))119120121if __name__ == '__main__':122main()123124125126