I\'m looking for a way to draw an infinite line (a line with no end, also known as a ray) through 2 points. I can draw a line between 2 points with Line2D, no problem here.
By multiplying the second point by 10, you're not maintaining the x to y ratio. You need to subtract the origin before multiplying.
g2.draw(new Line2D.Double(0, 61.632653061218946, 944*10, (217.25510204080692-61.632653061218946)*10+61.632653061218946));
should work.
In general, g2.draw(new Line2D.Double(x0,y0,(x1-x0)*k+x0,(y1-y0)*k+y0)
should work.
The math behind this is to consider the two points as vectors (a
& b
). Now, define a third and fourth vector: the difference vector (d
) and the infinite end point vector (c
). The difference vector is simply the difference between b
and a
; that is d = b-a
. To find an infinite end point, we simply need to add infinity times the difference vector to the starting point (a
). So, c = a + d*k
, where k
is the arbitrarily large constant. After replacing d
, we have c = a+(b-a)*k
.