由于数学似乎并没有将自己喜欢的话题,让我们保持它的简单和 利用学校的数学。
g2d.drawLine(x1, y1, x2, y2);
g2d.drawLine(u1, v1, u2, v2);
在所述两个线片A点是:
(x, y) = (x1, y1) + alpha * (x2 - x1, y2 - y1) where alpha in (0 .. 1).
(x, y) = (u1, v1) + beta * (u2 - u1, v2 - v1) where beta in (0 .. 1).
任何交点必须是关于这两个线件,因此:
x1 + alpha * (x2 - x1) = u1 + beta * (u2 - u1);
y1 + alpha * (y2 - y1) = v1 + beta * (v2 - v1);
这是相同如:
alpha * (x2 - x1) = (u1 - x1) + beta * (u2 - u1);
alpha * (y2 - y1) = (v1 - y1) + beta * (v2 - v1);
如果有是{0,...,1}中的alpha和beta解决方案,你已经掌握了它。
如果任何辅助因子 - 样(x2 - x1)
- 是0,你有一个简单的解决方案。 否则,你可以把/乘的辅因子。
或者你可以投资一点时间学习线性代数基础知识,矩阵和决定因素和这样。有了这些知识,人们还可以确定3D表面是否转向您,或者不是:法线矢量。