<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _draw_circle(self, pos_x, pos_y, radius, depth, stroke_width=1., fill_color=None, border_color=None, from_angle=0., to_angle=2 * pi):
 """Draws a circle Draws a circle with a line segment a desired position with desired size. :param float pos_x: Center x position :param float pos_y: Center y position :param float depth: The Z layer :param float radius: Radius of the circle """


        visible = False
        # Check whether circle center is in the viewport
        if not self.point_outside_view((pos_x, pos_y)):
            visible = True
        # Check whether at least on point on the border of the circle is within the viewport
        if not visible:
            for i in range(0, 8):
                angle = 2 * pi / 8. * i
                x = pos_x + cos(angle) * radius
                y = pos_y + sin(angle) * radius
                if not self.point_outside_view((x, y)):
                    visible = True
                    break
        if not visible:
            return False

        angle_sum = to_angle - from_angle
        if angle_sum < 0:
            angle_sum = float(to_angle + 2 * pi - from_angle)
        segments = self.pixel_to_size_ratio() * radius * 1.5
        segments = max(4, segments)
        segments = int(round(segments * angle_sum / (2. * pi)))

        types = []
        if fill_color is not None:
            types.append(GL_POLYGON)
        if border_color is not None:
            types.append(GL_LINE_LOOP)

        for type in types:
            if type == GL_POLYGON:
                fill_color.set()
            else:
                self._set_closest_stroke_width(stroke_width)
                border_color.set()
            glBegin(type)
            angle = from_angle
            for i in range(0, segments):
                x = pos_x + cos(angle) * radius
                y = pos_y + sin(angle) * radius
                glVertex3f(x, y, depth)
                angle += angle_sum / (segments - 1)
                if angle > 2 * pi:
                    angle -= 2 * pi
                if i == segments - 2:
                    angle = to_angle
            glEnd()

        return True