簡單題。
九點圓問題看似複雜,但因為通過 the midpoint of each side of the triangle,
也就是說,算出三中點坐標,例如 AB 中點坐標就是 ((Ax + Bx)/2, (Ay + By)/2)
有三中點,就能直接算出九點圓的圓心坐標跟半徑。
http://uva.onlinejudge.org/external/123/12302.html
程式碼也是短短的:
https://github.com/Meng-Gen/UVa/blob/master/UVa/acm_12302.cc
圓的算法在
http://mathforum.org/library/drmath/view/55239.html
這可以減少浮點數計算誤差,簡單說就是聰明解,
(h-x1)^2 + (k-y1)^2 = r^2
(h-x2)^2 + (k-y2)^2 = r^2
(h-x3)^2 + (k-y3)^2 = r^2
雖然有二次項,但只要兩兩相減,不僅消掉 h^2, k^2,一併也把 r^2 消掉,
變成純 h, k 的二元一次連立方程式,這個解就簡單了。
跟 UVa 190 幾乎一樣,不過 UVa 190 比較機車,需要用心處理 output format
沒有留言:
張貼留言