# y = 2*(np.random.random()-0.5) # pc.add_point(x, y, 0) for pt in pc.points: pt.normal = -pt.position / np.sqrt(np.dot(pt.position, pt.position)) return pc def get_dist_func(pc): def dist(x, y): pt = Point(x, y, 0) neighbors = pc.nearest_neighbors(pt, 50) d = 0 for pt2 in neighbors: diff = pt.position - pt2.position d += np.dot(diff, pt2.normal) return d return dist if __name__ == '__main__': pc = get_circle() dist = get_dist_func(pc) quadtree = Quadtree(pc.points, 4) contour = quadtree.compute_contour(dist) print 'Found %d edges' % len(contour) # quadtree.display() for (pt1, pt2) in contour: x1, y1, _ = pt1.position x2, y2, _ = pt2.position plt.plot([x1, x2], [y1, y2]) # plt.show() quadtree.display()
pt.normal = -pt.position / np.sqrt(np.dot(pt.position, pt.position)) return pc def get_dist_func(pc): def dist(x, y): pt = Point(x, y, 0) neighbors = pc.nearest_neighbors(pt, 50) d = 0 for pt2 in neighbors: diff = pt.position - pt2.position d += np.dot(diff, pt2.normal) return d return dist if __name__ == '__main__': pc = get_circle() dist = get_dist_func(pc) quadtree = Quadtree(pc.points, 4) contour = quadtree.compute_contour(dist) print 'Found %d edges' % len(contour) # quadtree.display() for (pt1, pt2) in contour: x1, y1, _ = pt1.position x2, y2, _ = pt2.position plt.plot([x1, x2], [y1, y2]) # plt.show() quadtree.display()