vehicle2.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from pysketcher import *
  2. class Vehicle0(Shape):
  3. def __init__(self, w_1, R, L, H):
  4. wheel1 = Circle(center=(w_1, R), radius=R)
  5. wheel2 = wheel1.copy()
  6. wheel2.translate((L,0))
  7. under = Rectangle(lower_left_corner=(w_1-2*R, 2*R),
  8. width=2*R + L + 2*R, height=H)
  9. over = Rectangle(lower_left_corner=(w_1, 2*R + H),
  10. width=2.5*R, height=1.25*H)
  11. wheels = Composition(
  12. {'wheel1': wheel1, 'wheel2': wheel2})
  13. body = Composition(
  14. {'under': under, 'over': over})
  15. vehicle = Composition({'wheels': wheels, 'body': body})
  16. xmax = w_1 + 2*L + 3*R
  17. ground = Wall(x=[R, xmax], y=[0, 0], thickness=-0.3*R)
  18. self.shapes = {'vehicle': vehicle, 'ground': ground}
  19. def colorful(self):
  20. wheels = self.shapes['vehicle']['wheels']
  21. wheels.set_filled_curves('blue')
  22. wheels.set_linewidth(6)
  23. wheels.set_linecolor('black')
  24. under = self.shapes['vehicle']['body']['under']
  25. under.set_filled_curves('red')
  26. over = self.shapes['vehicle']['body']['over']
  27. over.set_filled_curves(pattern='/')
  28. over.set_linewidth(14)
  29. def _test():
  30. R = 1; L = 4; H = 2; w_1 = 5
  31. xmax = w_1 + 2*L + 3*R
  32. drawing_tool.set_coordinate_system(
  33. xmin=0, xmax=xmax, ymin=-1, ymax=2*R + 3*H, axis=False)
  34. vehicle = Vehicle0(w_1, R, L, H)
  35. vehicle.draw()
  36. drawing_tool.display()
  37. print vehicle
  38. vehicle.graphviz_dot('Vehicle0', classname=False)
  39. vehicle.recurse('vehicle')
  40. drawing_tool.erase()
  41. vehicle.colorful()
  42. vehicle.draw()
  43. drawing_tool.display()
  44. if __name__ == '__main__':
  45. _test()
  46. raw_input()