haar_lib/geom/
circumcircle.rs

1//! 三角形の外接円
2
3use crate::geom::*;
4
5/// 三角形(△abc)の外接円を求める
6pub fn circumcircle(a: Vector, b: Vector, c: Vector) -> Circle {
7    let a_ = (b - c).abs_sq();
8    let b_ = (a - c).abs_sq();
9    let c_ = (a - b).abs_sq();
10    let s = a_ + b_ + c_;
11    let a_ = a_ * (s - a_ * 2.0);
12    let b_ = b_ * (s - b_ * 2.0);
13    let c_ = c_ * (s - c_ * 2.0);
14    let s = a_ + b_ + c_;
15    let a_ = a_ / s;
16    let b_ = b_ / s;
17    let c_ = c_ / s;
18    let center = a * a_ + b * b_ + c * c_;
19
20    Circle::new(center, (center - a).abs())
21}