スポンサーリンク

三角形の外接円を求める(二次元)

ソースコード

//! @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) );
}

実行例

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: