이처럼 두 직선의 정보를 매개변수로 받아, 그 교점이 정수이면 Point 객체를 반환하는 메서드를 선언했습니다. 이 메서드를 어떻게 구현할 수 있을까요? 다음과 같이 두 직선이 있다고 합시다.
• a1x + b1y + c1 = 0
• a2x + b2y + c2 = 0
이 두 직선의 교점은 다음과 같이 계산됩니다.
이를 이용하여 교점을 구하고, 정수일 때만 반환하도록 메서드를 구현해봅시다.
double x = (double) (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1);
double y = (double) (a2 * c1 - a1 * c2) / (a1 * b2 - a2 * b1);
if (x % 1 != 0 || y % 1 != 0) return null;
return new Point((long) x, (long) y);