!!omap
- name: car
- parts:
  - name: head
    shapes:
      libraries: ['from math import tan, radians, sin, cos', 'from pysketcher import *']
  - name: constants
    shapes:
        R: 1.0    # radius of wheel
        L: 4.0    # distance between wheels
        H: 2.0    # height of vehicle body
        w_1: 5.0  # position of front wheel
  - name: frame
    shapes:
        xmax: w_1 + 2*L + 3*R
        setframe:
            action: drawing_tool.set_coordinate_system(xmin=0, xmax=xmax,
                                   ymin=-1, ymax=2*R + 3*H,
                                   axis=False)
        wheel1: |
                 Composition({'wheel': Circle(center=(w_1, R), radius=R),
                    'cross': Composition({'cross1': Line((w_1,0),(w_1,2*R)),
                    'cross2': Line((w_1-R,R), (w_1+R,R))})})
        wheel2: 
            formula: wheel1.copy()
            transform: translate((L,0))

        under: Rectangle(lower_left_corner=(w_1-2*R, 2*R),
                  width=2*R + L + 2*R, height=H)
        over: Rectangle(lower_left_corner=(w_1, 2*R + H),
                  width=2.5*R, height=1.25*H)

        wheels: | 
                  Composition({'wheel1': wheel1, 'wheel2': wheel2})
        body:  |
                 Composition({'under': under, 'over': over})

        vehicle: |
                  Composition({'wheels': wheels, 'body': body})
        ground: Wall(x=[R, xmax], y=[0, 0], thickness=-0.3*R)

        car: |
               Composition({'vehicle': vehicle, 'ground': ground})