Как Найти точку пересечения 2х прямых, зная только 2 точки каждой прямой?
public static boolean isLinesIntercepts(Pair<Float, Float> start1, Pair<Float, Float> end1, Pair<Float, Float> start2, Pair<Float, Float> end2) {
        double vector1 = (end2.first - start2.first) * (start1.second - start2.second) - (end2.second - start2.second) * (start1.first - start2.first);
        double vector2 = (end2.first - start2.first) * (end1.second - start2.second) - (end2.second - start2.second) * (end1.first - start2.first);
        double vector3 = (end1.first - start1.first) * (start2.second - start1.second) - (end1.second - start1.second) * (start2.first - start1.first);
        double vector4 = (end1.first - start1.first) * (end2.second - start1.second) - (end1.second - start1.second) * (end2.first - start1.first);
        return ((vector1 * vector2 <= 0) && (vector3 * vector4 <= 0));
    }
можно было и загуглить
Псевдокод:vec_t = left.end - left.start;
vec_k = right.end - right.start;
r = right.start - left.start;
d = vec_t ⋅ vec_k;
if (d ≃ 0.0)
	return; // параллельны
d_t = r ⋅ vec_k;
d_k = r ⋅ vec_t;
t = d_t / d; // параметр на одном отрезке ∈ [0, 1]
k = d_k / d; // на втором отрезке ∈ [0, 1]
if (t ∈ [0, 1] ∧ k ∈ [0, 1])
	pt = left.start + t ⋅ vec_t = right.start + k ⋅ vec_k;