2012-12-31 28 views
1

可能重複:
Finding if a circle is inside another circle檢查了一圈完全包含了一圈

我如何確定一個圓完全包含另一個圓(在Java中)

public class Circle { 
    //x and y define the top left rectangular region bounding this circle 
    private int x, y, radius; 
} 

public boolean circleContainsCircle(Circle big, Circle small) { 

... 

} 
+1

你有什麼思維過程?我看到一個完全空白的檢查方法。 – Srinivas

+1

return dist(small.x,small.y,big.x,big.y)+ small.radius <= big.radius; – irrelephant

+0

很容易 public boolean circleContainsCircle(Circle big,Circle small)double maxOffset = Math.sqrt((small.x - big.x)*(small.x - big.x)+(small.y - big .y)*(small.y - big.y))+ small.radius; return maxOffset iMysak

回答

1

切割兩個圓並觸及其表面的最大部分是通過它們的c entres。現在我們可以說,如果這個最長的段的長度小於或等於最大圓的直徑,那麼較小的圓明顯在大圈內:

public boolean circleContainsCircle(Circle big, Circle small) { 

    double segment_length = euler_distance(big.center, small.center) + 
     small.radius + big.radius; 
    return (segment_length <= 2 * big.radius); 

}