Given a circle of radius r and center in point(x1, y1) and given a point(x2, y2). The task is move center of circle from given center (x1, y1) to target (x2, y2) using minimum number of steps. In one step, we can put a pin on the border of the circle at any point, then rotate the circle around that pin by any angle and finally remove the pin.
Input : r = 2 x1 = 0, y1 = 0 x2 = 0, y2 = 4 Output :1 Input : r = 1 x1 = 1, y1 = 1, x2 = 4, y2 = 4 Output : 3
Let’s consider a straight line between the two centers. Clearly to move the center with maximum distance we need to rotate it around the line and with 180 degrees. So the maximum distance we can move the center each time is 2 * r. Let’s continue moving the center with 2 * r distance each time until the two circles intersects. Now obviously we can make the center moves into its final position by rotating it around one of the intersection points of the two circles until it reaches the final destination.
Every time we make the circle moves 2 * r times except the last move it’ll be < 2 * r. Let the initial distance between the two points be d. Solution to the problem will be ceil(d/2*r).
Time Complexity : O(1)
This article is contributed by Rakesh Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Minimum Cost Polygon Triangulation
- Non-crossing lines to connect points in a circle
- Circle and Lattice Points
- Queries on count of points lie inside a circle
- Paper Cut into Minimum Number of Squares
- Check whether a point exists in circle sector or not.
- Minimum distance to travel to cover all intervals
- Pizza cut problem (Or Circle Division by Lines)
- Minimum lines to cover all points
- Minimum block jumps to reach destination
- Program to find area of a circle
- Angular Sweep (Maximum points that can be enclosed in a circle of given radius)
- Regular polygon using only 1s in a binary numbered circle
- Neighbors of a point on a circle using Bresenham's algorithm
- Count of obtuse angles in a circle with 'k' equidistant points between 2 given points
- Check whether given circle resides in boundary maintained by two other circles
- Check if a line touches or intersects a circle
- Minimum Perimeter of n blocks
- Find minimum radius such that atleast k point lie inside the circle
- Program to find Circumference of a Circle