탱크와 파이프
시간 제한2초메모리 제한512 MB
탱크 반지름, 파이프 반지름, 축 간격, 파이프 기울기를 입력받아 파이프가 탱크 벽과 만나는 교선의 길이를 구합니다.
문제
Frobozz Magic Tank and Pipe 회사는 특수 탱크와 반응 용기를 만든다. 허리케인 Entharion이 Quendor 정제소 #3을 거의 파괴해서, 그곳의 모든 파이프와 탱크를 업그레이드해야 한다. 영업 기술자가 입찰에 쓰는 프로그램도 이 프로젝트에 맞게 업그레이드해야 한다. 견적의 한 요소는 파이프를 탱크(또는 반응 용기)에 연결하는 것이다. 파이프는 탱크에서 끝나거나 탱크 벽을 관통할 수 있다.
가장 흔한 경우는 파이프 축이 원통형 탱크 축(A)에 수직인 경우다. 드물게 파이프 축이 탱크 축에 수직이 아니거나(B), 탱크 축에서 벗어나거나(C), 둘 다인 경우(D)도 있다. 회사는 A형은 바로 처리할 데이터를 충분히 가지고 있다. 나머지 유형에는 탱크와 파이프의 두께, 파이프와 탱크 표면이 이루는 각, 탱크 내부 라이닝, 파이프와 탱크의 접합부 길이를 바탕으로 한 모델을 맞추려 한다. 접합부 길이는 탱크 벽을 자르는 길이와 용접 길이를 정한다.

파이프와 탱크의 크기, 오프셋, 파이프 각도가 주어졌을 때, 파이프와 원통형 탱크 벽이 만나는 부분의 길이를 구하는 프로그램을 작성하라.
입력
첫 줄에는 데이터 세트의 개수 ()가 주어진다. 각 데이터 세트는 독립적으로 처리한다.
각 데이터 세트는 한 줄이며, 데이터 세트 번호 뒤에 실수 네 개가 이어진다. 순서대로 탱크의 반지름 , 파이프의 반지름 , 원통의 축에서 파이프의 축까지의 수직 오프셋, 원통 축에 수직인 평면에 대한 파이프 축의 기울기이다.

파이프 축 위의 한 점에 대해, 는 원통 축에 수직인 평면까지의 수직 거리이고, 은 그 평면을 따라 잰 거리이다. 파이프 축의 기울기는 이다.
출력
각 데이터 세트마다 한 줄을 출력한다. 데이터 세트 번호 뒤에 파이프와 원통형 탱크 벽이 만나는 부분의 길이를 소수점 아래 3자리까지 출력한다.