半徑為r的圓心為a,座標為(x,y) 半徑為s的圓心為b,座標為(a,b) 兩圓交點為c,d ab與cd的交點為e,座標為(x0,y0) 過c點垂線與過e點水平線交點為f 令l為ab長度,k1為線ab的斜率,k2為線cd的斜率
則l=√[(a-x)²+(b-y)²] k1=(b-y)/(a-x) k2=-1/k1 ce²=r²-ae² ce²=s²-eb²=s²-(ab-ae)²=s²-(l-ae)²=s²-l²-ae²+2l*ae 故ae=(r²-s²+l²)/2l ae/l=(r²-s²+l²)/2l² x0=x+(a-x)ae/l=x+(a-x)(r²-s²+l²)/(2l²) y0=y+k1(x0-x) r2=ce²=r²-(x0-x)²-(y0-y)² r2=cf²+ef²=(k2ef)²+ef²=(1+k2²)ef² 故ef=√[r2/(1+k2²)]
所以,c,d座標計算公式為 xc=x0-ef=x0-√[r2/(1+k2²)] yc=y0+k2(xc-x0)
xd=x0+ef=x0+√[r2/(1+k2²)] yd=y0+k2(xd-x0)
判斷兩個鍊錶是否相交,若相交,求交點。
第一種情況 兩個鍊錶均不含有環 思路 1 直接法 採用暴力的方法,遍歷兩個鍊錶,判斷第乙個鍊錶的每個結點是否在第二個鍊錶中,時間複雜度為o len1 len2 耗時很大。2 hash計數法 以鍊錶節點位址為值,遍歷第乙個鍊錶,使用 hash 儲存所有節點位址值,結束條件為到最後乙個節點 無環 或 h...
判斷兩個鍊錶是否相交,若相交,求交點。
首先我們來看一下單鏈表 第一種情況 兩個鍊錶均不帶環 判斷兩個不帶環的鍊錶是否相交,如果兩個鍊錶相交的話可如下圖所示 判斷兩個鍊錶是否相交 int isslistcross slistnode phead1,slistnode phead2 相交求交點 兩種方法 法一 因為兩個不帶環鍊錶相交,所以讓...
計算兩個圓相交部分的面積
以下是直接封裝好的函式,六個引數,意思分別是第乙個圓的圓心,半徑,第二個圓的圓心,半徑,返回相交部分的面積,如果不相交,則返回零。程式設計的時候直接複製貼上呼叫就行了,至於原理,就是兩個扇形的面積減去四邊形的面積。但是四邊形不一定是凸四邊形,所以我用到了凱 式,直接求面積,管它凸的還是凹的!扇形的圓...