구면 거울
시간 제한1초메모리 제한128 MB
3차원 공간에서 레이저가 여러 구형 거울에 반사되는 과정을 시뮬레이션해 마지막 반사 지점을 구하는 문제입니다.
문제
3차원 공간에 개의 구면 거울이 있다.
에서 방향으로 레이저를 발사한다. 레이저는 항상 직선으로 나아간다.
점 에서 발사된 레이저가 어떤 구면 거울 위의 점 에서 반사된다고 하자. 이때 점 을, 그 구면 거울의 바깥에 있으면서 구면 거울의 중심과 를 잇는 직선 위에 있는 한 점이라고 하자. 그러면 레이저는 다음 조건을 만족하는 방향 로 반사된다.
(1) 은 , , 이 만드는 평면 위에 있으며, 을 만족한다.
레이저가 마지막으로 반사되는 점의 위치를 찾는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스의 첫째 줄에는 구면 거울의 개수 이 주어진다. 둘째 줄에는 레이저를 발사한 방향 , , 가 공백으로 구분되어 주어진다.
다음 개의 줄에는 구면 거울을 설명하는 네 정수 , , , 가 주어진다. 그 구면 거울의 중심은 이고 반지름은 이다.
두 구면 거울 사이의 거리는 적어도 이다. 점 은 모든 구면 거울의 바깥에 있으며, 각 구면 거울과 적어도 만큼 떨어져 있다.
레이저는 구면 거울에 적어도 1번, 많아야 5번 반사된다. 또한 반사각 (즉 이며 과 같다)는 항상 보다 작다.
출력
각 테스트 케이스에 대해 마지막으로 반사되는 점의 좌표를 공백으로 구분하여 출력한다. 모든 좌표는 소수점 넷째 자리에서 반올림하여 셋째 자리까지 출력한다.