//! @brief 外接円を求める //! @param [out] x 外接円の中心のx座標 //! @param [out] y 外接円の中心のy座標 //! @param [out] r 外接円の半径 //! @param [in] x1 三角形の第一頂点のx座標 //! @param [in] y1 三角形の第一頂点のy座標 //! @param [in] x2 三角形の第二頂点のx座標 //! @param [in] y2 三角形の第二頂点のy座標 //! @param [in] x3 三角形の第三頂点のx座標 //! @param [in] y3 三角形の第三頂点のy座標 //! @return なし inline void Circumscribed_Circle( double* x, double* y, double* r, const double x1, const double y1, const double x2, const double y2, const double x3, const double y3 ) { double xT = (y3 - y1) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1) + (y1 - y2) * (x3 * x3 - x1 * x1 + y3 * y3 - y1 * y1); double yT = (x1 - x3) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1) + (x2 - x1) * (x3 * x3 - x1 * x1 + y3 * y3 - y1 * y1); double c = 2 * ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)); *x = xT / c; *y = yT / c; *r = sqrt( (*x - x1) * (*x - x1) + (*y - y1) * (*y - y1) ); }