<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def as_poly(self, margin_width=0, margin_height=0):
 """Converts this box to a polygon, i.e. 4x2 array, representing the four corners starting from lower left to upper left counterclockwise. :param margin_width: The additional "margin" that will be added to the box along its width dimension (from both sides) before conversion. :param margin_height: The additional "margin" that will be added to the box along its height dimension (from both sides) before conversion. array([[-2., -1.], [ 2., -1.], [ 2., 1.], [-2., 1.]]) array([[ 1., -2.], [ 1., 2.], [-1., 2.], [-1., -2.]]) array([[ 1., -2.], [ 1., 2.], [-1., 2.], [-1., -2.]]) """

        v_hor = (self.width/2 + margin_width)*np.array([np.cos(self.angle), np.sin(self.angle)])
        v_vert = (self.height/2 + margin_height)*np.array([-np.sin(self.angle), np.cos(self.angle)])
        c = np.array([self.cx, self.cy])
        return np.vstack([c - v_hor - v_vert, c + v_hor - v_vert, c + v_hor + v_vert, c - v_hor + v_vert])