c - Given centers, find minimum radius for set of circles such that they fully cover another -
i have following geometry problem: given circle center in origin - c(0, 0), , radius 1. inside circle given n points represent centers of n different circles. asked find minimum radius of small circles (the radius of circles equal) in order cover boundary of large circle.
the number of circles is: 3 ≤ n ≤ 10000 , problem has solved precision of p decimals 1 ≤ p ≤ 6.
for example:
n = 3 , p = 4
and coordinates:
(0.193, 0.722)
(-0.158, -0.438)
(-0.068, 0.00)
the radius of small circles is: 1.0686.
i have following idea problem implementing it. idea consists of binary search find radius , each value given binary search try , find intersection point between small circles , large one. each intersection have result arc. next step 'project' coordinates of arcs on x axis , y axis, result being number of intervals. if reunions of intervals x , y axis have result interval [-1, 1] on each axis, means circle covered.
in order avoid precision problems thought of searching between 0 , 2×10p, , taking radius 10p, eliminating figures after comma, problem figuring out how simulate intersection of circles , afterwards how see if reunion of resulting intervals form interval [-1, 1].
any suggestions welcomed!
each point in set has cover the intersection of cell in point-set's voronoi diagram , test-circle around origin.
to find radius, start computing voronoi diagram of point set. "close" voronoi diagram intersecting infinite edges target-circle. each point in set, check distance points of "closed" voronoi cell. maximum should solution.
it shouldn't matter cells closed arc instead of straight line test-circle until solution radius gets greater 1 (because "small" circles arc stronger). in case, have check furthest point cell center arc.
Comments
Post a Comment