Javaでの円と直線の交点の計算方法


  1. 円と直線の方程式を確認する:

    • 円の方程式: (x - h)^2 + (y - k)^2 = r^2 (中心が(h, k)で半径がrの円)
    • 直線の方程式: y = mx + c (傾きがmでy切片がcの直線)
  2. 円と直線の方程式を連立させる: 円の方程式を直線の方程式に代入して連立方程式として解きます。これにより、交点のx座標を求めることができます。

  3. 交点のx座標からy座標を計算する: 交点のx座標を円の方程式に代入して、対応するy座標を計算します。

  4. 交点の座標を表示する: 計算した交点の座標を出力して表示します。

以下に、Javaで円と直線の交点を計算するためのサンプルコードを示します。

public class CircleLineIntersection {
    public static void main(String[] args) {
        // 円の情報
        double centerX = 0.0; // 円の中心のx座標
        double centerY = 0.0; // 円の中心のy座標
        double radius = 5.0; // 円の半径
        // 直線の情報
        double slope = 1.0; // 直線の傾き
        double yIntercept = 0.0; // 直線のy切片
        // 交点の計算
        double discriminant = Math.sqrt(4 * Math.pow(slope * (yIntercept - centerY), 2) - 4 * (1 + Math.pow(slope, 2)) * (Math.pow(yIntercept - centerY, 2) - Math.pow(radius, 2)));
        double intersectionX1 = (2 * (slope * (yIntercept - centerY)) + discriminant) / (2 * (1 + Math.pow(slope, 2)));
        double intersectionX2 = (2 * (slope * (yIntercept - centerY)) - discriminant) / (2 * (1 + Math.pow(slope, 2)));
        double intersectionY1 = slope * intersectionX1 + yIntercept;
        double intersectionY2 = slope * intersectionX2 + yIntercept;
        // 交点の座標を表示
        System.out.println("交点1: (" + intersectionX1 + ", " + intersectionY1 + ")");
        System.out.println("交点2: (" + intersectionX2 + ", " + intersectionY2 + ")");
    }
}

上記のコードは、円の中心座標、半径、直線の傾き、y切片を指定し、交点の座標を計算して表示する例です。円と直線の方程式を連立させて解く方法を使用しています。