<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def is_edge_not_excluding_vertices(self, other):
 """Returns False iif any edge excludes all vertices of other."""


        c_a = cos(self.angle)
        s_a = sin(self.angle)

        # Get min and max of other.

        other_x_min, other_x_max, other_y_min, other_y_max = other.get_bbox()

        self_x_diff = 0.5 * self.width
        self_y_diff = 0.5 * self.height

        if c_a > 0:
            if s_a > 0:
                return \
                    c_a * other_x_max + s_a * other_y_max < -self_x_diff or \
                    c_a * other_x_min + s_a * other_y_min >  self_x_diff or \
                    c_a * other_y_max - s_a * other_x_min < -self_y_diff or \
                    c_a * other_y_min - s_a * other_x_max >  self_y_diff

            else:  # s_a <= 0.0
                return \
                    c_a * other_x_max + s_a * other_y_min < -self_x_diff or \
                    c_a * other_x_min + s_a * other_y_max >  self_x_diff or \
                    c_a * other_y_max - s_a * other_x_max < -self_y_diff or \
                    c_a * other_y_min - s_a * other_x_min >  self_y_diff

        else:  # c_a <= 0.0
            if s_a > 0:
                return \
                    c_a * other_x_min + s_a * other_y_max < -self_x_diff or \
                    c_a * other_x_max + s_a * other_y_min >  self_x_diff or \
                    c_a * other_y_min - s_a * other_x_min < -self_y_diff or \
                    c_a * other_y_max - s_a * other_x_max >  self_y_diff

            else:  # s_a <= 0.0
                return \
                    c_a * other_x_min + s_a * other_y_min < -self_x_diff or \
                    c_a * other_x_max + s_a * other_y_max >  self_x_diff or \
                    c_a * other_y_min - s_a * other_x_max < -self_y_diff or \
                    c_a * other_y_max - s_a * other_x_min >  self_y_diff