示例#1
0
def classify_point(point, previous_point, next_point):
    orientation = orient(previous_point, point, next_point)
    if is_below(point, previous_point, next_point):
        if orientation > 0:
            return ENDING
        else:
            return CONNECTING
    elif is_above(point, previous_point, next_point):
        if orientation > 0:
            return STARTING
        else:
            return DIVIDING
    else:
        return CORRECT
def classify_point(point, previous_point, next_point):
    orientation = orient(previous_point, point, next_point)
    if is_below(point, previous_point, next_point):
        if orientation > 0:
            return ENDING
        else:
            return CONNECTING
    elif is_above(point, previous_point, next_point):
        if orientation > 0:
            return STARTING
        else:
            return DIVIDING
    else:
        return CORRECT
    def find_init_segment(self):

        if not self.segments:
            return None

        init_segment = self.segments[0]

        for segment in self.segments[1:]:

            if segment.max_y() < init_segment.max_y():
                continue

            init_x, init_y = init_segment.max_point()
            seg_mx, seg_my = segment.max_point()

            if seg_my > init_y:
                init_segment = segment

            elif seg_my == init_y:
                if orient(segment.max_point(), segment.min_point(), init_segment.min_point()) > 0:
                    init_segment = segment

        return init_segment
示例#4
0
    def find_init_segment(self):

        if not self.segments:
            return None

        init_segment = self.segments[0]

        for segment in self.segments[1:]:

            if segment.max_y() < init_segment.max_y():
                continue

            init_x, init_y = init_segment.max_point()
            seg_mx, seg_my = segment.max_point()

            if seg_my > init_y:
                init_segment = segment

            elif seg_my == init_y:
                if orient(segment.max_point(), segment.min_point(),
                          init_segment.min_point()) > 0:
                    init_segment = segment

        return init_segment
示例#5
0
def belongs_to_polygon(triangle, chain):
    point1, point2, point3 = triangle.point1, triangle.point2, triangle.point3
    orientation = orient(point1, point2, point3)
    return (chain == LEFT and orientation > 0) or (chain == RIGHT
                                                   and orientation < 0)