給定一個圓心以及半徑,以及一個矩形的左下以及右上的x,y座標,判斷兩個圖形有沒有重疊。
找到矩形中距離圓心最近的一點(x,y),判斷它距離圓心距離是否在半徑之內。
如果 x_center在x1與x2之間,則代表x之距離為0,否則則計算x1和x2誰與x_center距離為最近。
如果 y_center在y1與y2之間,則代表y之距離為0,否則則計算y1和y2誰與y_center距離為最近。
最後則利用畢氏定理確定是否在圓內。
程式碼:
def checkOverlap(self, radius: int, x_center: int, y_center: int, x1: int, y1: int, x2: int, y2: int) -> bool: if(x1 <= x_center <= x2): tag = 0 else: tag = min(abs(x1-x_center),abs(x2-x_center)) if(y1 <= y_center <= y2): tag1 = 0 else: tag1 = min(abs(y1-y_center),abs(y2-y_center)) return tag**2+tag1**2<=radius**2
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up