def vector_drive(self, vx, vy, vw, tm_diff):
        """Call this from your :func:`PhysicsEngine.update_sim` function.
           Will update the robot's position on the simulation field.
           
           This moves the robot using a velocity vector relative to the robot
           instead of by speed/rotation speed.
           
           :param vx: Speed in x direction relative to robot in ft/s
           :param vy: Speed in y direction relative to robot in ft/s
           :param vw: Clockwise rotational speed in rad/s
           :param tm_diff:         Amount of time speed was traveled
        """

        # if the robot is disabled, don't do anything
        if not self.robot_enabled:
            return

        angle = vw * tm_diff
        vx = vx * tm_diff
        vy = vy * tm_diff

        x = vx * math.sin(angle) + vy * math.cos(angle)
        y = vx * math.cos(angle) + vy * math.sin(angle)

        self.distance_drive(x, y, angle)