【发布时间】:2014-11-06 12:21:11
【问题描述】:
这里是计算
L1 = 连接点 A(x1,y1) 和 B(x2,y2) 的线 L2 = 线连接点 c(x3,y3) 和 D(x4,y4)
L1线
直线方程:y = m1*x + c1
斜率 m1 : (y2-y1)/(x2-x1)
Y 截距:c1 = (y1 - m1*x1)
L2线
直线方程:y = m2*x + c2
斜率 m2 : (y4-y3)/(x4-x3)
Y 截距:c2 = (y3 - m2*x3)
对于交点
求解上述方程我们得到
x = (c2 -c1)/(m1-m2)
y = (c1*m2 - c2*m1)/(m2-m1)
以上这些计算是用来计算我的java程序中的交点的。
问题
当两条线分别平行于x轴和y轴时会出现问题。例如如果连接点如下
L1 = A(34,112) B(34,180) ...(x坐标值保持不变)
L2 = C(72,100) D(88,100) ...(y坐标值保持不变)
现在 m1 将变为 Infinity 并且 m2 将变为 0 因此 c1 将变为 Infinity 并且 c2=y3 因此使用以下给定公式计算交点给出奇怪的 (NaN) 结果,尽管线 L1 和 L2 必须在 (34,100) 处相交。
x = (c2 -c1)/(m1-m2)
y = (c1*m2 - c2*m1)/(m2-m1)
为什么会出现这样的问题?这个问题是如何使用数学来处理的,以便可以在程序中实现。
【问题讨论】:
标签: java graphics coordinate-systems