求兩圓交點算法代碼(golang實現(xiàn))

數(shù)學求解原理請看:求兩圓相交的交點的方法


實現(xiàn)代碼:

package main

import (
    "math"
)

//代表一個點鲤孵,包含橫縱坐標
type Point struct {
    X, Y float64
}

//代表一個圓,包含橫縱坐標及半徑
type Circle struct {
    Point
    R float64
}

//創(chuàng)建圓對象
func NewCircle(x, y, r float64) *Circle {
    return &Circle{Point{x, y}, r}
}

//求兩圓相交的交點包颁,交點個數(shù)可能有0,1,2
func Intersect(a *Circle, b *Circle) (p []Point) {
    dx, dy := b.X - a.X, b.Y - a.Y
    lr := a.R + b.R //半徑和
    dr := math.Abs(a.R - b.R) //半徑差
    ab := math.Sqrt(dx * dx + dy * dy) //圓心距
    if ab <= lr && ab > dr {
        theta1 := math.Atan(dy / dx)
        ef := lr - ab
        ao := a.R - ef / 2
        theta2 := math.Acos(ao / a.R)
        theta := theta1 + theta2
        xc := a.X + a.R * math.Cos(theta)
        yc := a.Y + a.R * math.Sin(theta)
        p = append(p, Point{xc, yc})
        if ab < lr { //兩個交點
            theta3 := math.Acos(ao / a.R)
            theta = theta3 - theta1
            xd := a.X + a.R * math.Cos(theta)
            yd := a.Y - a.R * math.Sin(theta)
            p = append(p, Point{xd, yd})
        }
    }
    return
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啡彬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子德谅,更是在濱河造成了極大的恐慌爹橱,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愧驱,居然都是意外死亡慰技,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門组砚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吻商,“玉大人,你說我怎么就攤上這事糟红“剩” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵盆偿,是天一觀的道長柒爸。 經常有香客問我,道長事扭,這世上最難降的妖魔是什么捎稚? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮求橄,結果婚禮上今野,老公的妹妹穿的比我還像新娘。我一直安慰自己罐农,他們只是感情好条霜,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涵亏,像睡著了一般蛔外。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溯乒,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天夹厌,我揣著相機與錄音,去河邊找鬼裆悄。 笑死矛纹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的光稼。 我是一名探鬼主播或南,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艾君!你這毒婦竟也來了采够?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤冰垄,失蹤者是張志新(化名)和其女友劉穎蹬癌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡逝薪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年隅要,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片董济。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡步清,死狀恐怖,靈堂內的尸體忽然破棺而出虏肾,到底是詐尸還是另有隱情廓啊,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布封豪,位于F島的核電站谴轮,受9級特大地震影響,放射性物質發(fā)生泄漏撑毛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一唧领、第九天 我趴在偏房一處隱蔽的房頂上張望藻雌。 院中可真熱鬧,春花似錦斩个、人聲如沸胯杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽做个。三九已至,卻和暖如春滚局,著一層夾襖步出監(jiān)牢的瞬間居暖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工藤肢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留太闺,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓嘁圈,卻偏偏與公主長得像省骂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子最住,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容