sphere.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:s2sphere 作者: sidewalklabs 项目源码 文件源码
def __add_candidate(self, candidate):
        if candidate is None:
            return

        if candidate.is_terminal:
            self.__result.append(candidate.cell.id())
            return

        assert candidate.num_children == 0

        num_levels = self.__level_mod
        if candidate.cell.level() < self.__min_level:
            num_levels = 1
        num_terminals = self.__expand_children(candidate,
                                               candidate.cell,
                                               num_levels)

        if candidate.num_children == 0:
            """ Not needed due to GC """
        elif not self.__interior_covering \
                and num_terminals == 1 << self.__max_children_shift() \
                and candidate.cell.level() >= self.__min_level:
            candidate.is_terminal = True
            self.__add_candidate(candidate)
        else:
            priority = (
                (
                    (
                        (candidate.cell.level() <<
                         self.__max_children_shift()
                         ) + candidate.num_children
                    ) << self.__max_children_shift()
                ) + num_terminals
            )
            heapq.heappush(self.__pq, (priority, candidate))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号