(x1, y1) と (x2, y2) で定義される線分が与えられた場合、y = 特定の値となる線上の位置を見つけます。
直線の方程式を取得し、連立方程式を使用して解くことができることは理解していますが、これは Line2D または他の Java クラスを使用して可能ですか?
提案やコメントをいただければ幸いです。
ケルビン。
(x1, y1) と (x2, y2) で定義される線分が与えられた場合、y = 特定の値となる線上の位置を見つけます。
直線の方程式を取得し、連立方程式を使用して解くことができることは理解していますが、これは Line2D または他の Java クラスを使用して可能ですか?
提案やコメントをいただければ幸いです。
ケルビン。
Java API には実際に交点を計算するものはないと思います。あなたが得ることができる最も近いものは、 Line2D を使用して、線分が (垂直) 線y = kと交差するかどうかをテストすることです。
Line2D line = new Line2D.Double(x1, y1, x2, y2);
if (line.intersectsLine(Double.MIN_VALUE, k, Double.MAX_VALUE, k)) {
double x = (x2 - x1) * (k - y1) / (y2 - y1);
// intersection is at (x, k)
} else {
// intersection is outside extend of the line segment
}
y1 != y2
ただし、それを確認し、交点を計算してから、x座標が [x1, x2] の範囲内にあるかどうかを確認する方がおそらく効率的です。
このようなタスクには、apache commons math をお勧めします。
http://commons.apache.org/math/apidocs/index.html
これを行う方法はいくつかあります。1つの方法は
org.apache.commons.math3.geometry.euclidean.twod.Line lineOne = new org.apache.commons.math3.geometry.euclidean.twod.Line(p,angle);
org.apache.commons.math3.geometry.euclidean.twod.Line horizontalLine = new org.apache.commons.math3.geometry.euclidean.twod.Line(new vector2d(0,yToSolveFor),pi/2);
Vector2D intersection=lineOne.intersect(horizontalLine);
intersection.getX(); // The answer