程式設計題目 圓形是否和正方形相交

2021-09-09 01:16:36 字數 845 閱讀 8095

第 23 題(演算法):

用最簡單,最快速的方法計算出下面這個圓形是否和正方形相交。"

3d 座標系 原點(0.0,0.0,0.0)

圓形:半徑 r = 3.0

圓心 o = (*.*, 0.0, *.*)

正方形:

4 個角座標;

1:(*.*, 0.0, *.*)

2:(*.*, 0.0, *.*)

3:(*.*, 0.0, *.*)

4:(*.*, 0.0, *.*)

思路:自己分類討論了一下,需要計算四個角到圓心的距離大於半徑,且四條邊到圓心的距離大於半徑。需要計算8個值。寫不出**,太繁瑣了。

網上的答案,非常值得學習。

先要做平移,然後用下面的**,(dx1,dx2)總是正方形中距離圓心最近的點。

//

將矩形中心置於原點(座標(0, 0),不在原點的可做平移),矩形的長、寬分別為w、h。圓為動圓,圓心坐

//標為 (ox,oy),圓半徑為r。則判斷圓與矩形是否相交:

bool collision(int ox, int oy, int w, int h, intr){

int dx = min(ox, w * 0.5

);

int dx1 = max(dx, -w*0.5

);

int dy = min(oy, h * 0.5

);

int dy1 = max(dy, -h * 0.5

);

return (dx1 - ox) * (dx1 - ox) + (dy1 - oy) * (dy1 - oy) <= r * r;

程式設計題目 圓形是否和正方形相交

第 23 題 演算法 用最簡單,最快速的方法計算出下面這個圓形是否和正方形相交。3d 座標系 原點 0.0,0.0,0.0 圓形 半徑 r 3.0 圓心 o 0.0,正方形 4 個角座標 1 0.0,2 0.0,3 0.0,4 0.0,思路 自己分類討論了一下,需要計算四個角到圓心的距離大於半徑,且...

canvas 畫正方形和圓形

繪製正方形 繪製正方形 獲取canvas標籤 varcs document.queryselector canvas 獲取canvas繪圖上下文 canvas繪圖的相關api varctx cs.getcontext 2d 繪圖 01 移動畫筆moveto x,y 座標 ctx.moveto 100...

最大正方形問題(DP 字首和)

1.在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入輸出格式 輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入輸出樣例 輸入樣例 1 4 4 0 1 1 1 1 1 1...