Line2D Java - 获取y = value的坐标?

时间:2012-08-20 17:05:29

标签: java 2d line coordinate

给定由(x1,y1)和(x2,y2)定义的线段,找到y =某个值的线上的位置。

我知道我可以获得线的等式,然后使用联立方程求解,但这可能使用Line2D或任何其他Java类吗?

任何建议或意见都将不胜感激!

开尔文。

2 个答案:

答案 0 :(得分:0)

我认为Java API中没有任何东西可以实际计算交集。我认为,最接近的是使用Line2D来测试线段是否与(垂直)线 y = k 相交,以获得某些常数 k < / EM>:

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]范围内可能更有效。< / p>

答案 1 :(得分:0)

我建议apache公共数学来完成这样的任务。

http://commons.apache.org/math/apidocs/index.html

有很多方法可以做到这一点。一种方法是

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