第 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...