求兩個相交圓的交點的公式

2021-07-25 11:38:13 字數 639 閱讀 7836

半徑為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 相交求交點 兩種方法 法一 因為兩個不帶環鍊錶相交,所以讓...

計算兩個圓相交部分的面積

以下是直接封裝好的函式,六個引數,意思分別是第乙個圓的圓心,半徑,第二個圓的圓心,半徑,返回相交部分的面積,如果不相交,則返回零。程式設計的時候直接複製貼上呼叫就行了,至於原理,就是兩個扇形的面積減去四邊形的面積。但是四邊形不一定是凸四邊形,所以我用到了凱 式,直接求面積,管它凸的還是凹的!扇形的圓...