아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

3차원 좌표변환

시간 제한1초메모리 제한512 MB

요약
최대 1000개의 점을 직교좌표계, 원통좌표계, 구면좌표계 사이에서 오차 1e-6 이내로 변환한다.
난이도

보통10점 중 4점

유형
수학, 기하, 구현
정답자
아직 제출이 없습니다

문제

3차원 공간에서 점의 위치를 표현하는 방식은 여러 가지가 있다. 일반적으로 많이 쓰이는 직교좌표계는 x축, y축, z축 방향의 1차원 위치를 통해 점의 위치를 표현한다. 이 문제에서는 점의 3차원 위치를 표현하는 또 다른 두 가지 방식을 소개한다. 편의상 점 PP의 직교좌표계상 좌표를 (x,y,z)(x, y, z)라 하자.

  • 원통좌표계: PP에서 xy평면에 내린 수선의 발을 HH라고 하자. OH‾\overline{OH}의 길이를 rr, xy평면을 내려다보면서 x축의 양의 방향을 동경으로 하여 OH→\overrightarrow{OH}까지 시계 반대 방향으로 잰 각을 ϕ\phi라 할 때, PP의 좌표는 (r,ϕ,z)\left(r, \phi, z\right)이다. (r≥0;(r \ge 0; 0≤ϕ<2π)0\le\phi\lt 2\pi) 단, r=0r=0인 경우 ϕ=0\phi=0으로 정의한다.
  • 구면좌표계: PP에서 xy평면에 내린 수선의 발을 HH라고 하자. OP‾\overline{OP}의 길이를 ρ\rho, z축의 양의 방향을 동경으로 하여 OP→\overrightarrow{OP}까지 잰 각 중 크지 않은 것을 θ\theta, xy평면을 내려다보면서 x축의 양의 방향을 동경으로 하여 OH→\overrightarrow{OH}까지 시계 반대 방향으로 잰 각을 ϕ\phi라 할 때, PP의 좌표는 (ρ,θ,ϕ)\left(\rho, \theta, \phi\right)이다. (ρ≥0;(\rho \ge 0; 0≤θ≤π;0\le\theta\le\pi; 0≤ϕ<2π)0\le\phi\lt 2\pi) 단, OH‾=0\overline{OH} = 0인 경우 ϕ=0\phi=0으로 정의하고, ρ=0\rho=0인 경우 θ=0\theta=0으로 정의한다.

직교좌표계, 원통좌표계, 구면좌표계 중 하나를 사용하는 PP의 좌표가 주어졌을 때, 이를 다른 하나의 좌표계를 사용하는 좌표로 바꿔보자.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤1,000)(1\le T\le 1\\,000)

둘째 줄부터 테스트 케이스가 주어진다. 각 테스트 케이스는 22개의 줄로 이루어져 있다.

테스트 케이스의 첫째 줄에는 변환할 좌표의 좌표계 번호와 출력할 좌표의 좌표계 번호가 주어진다. 1은 직교좌표계, 2는 원통좌표계, 3은 구면좌표계이다. 두 좌표계 번호는 서로 다르다.

테스트 케이스의 둘째 줄에는 변환할 좌표를 나타내는 세 실수 aa, bb, cc가 소수점 아래 여덟째 자리까지 주어진다. (a,b,c)(a, b, c)는 직교좌표계의 경우 (x,y,z)(x, y, z)이고, 원통좌표계의 경우 (r,ϕ,z)(r, \phi, z)이고, 구면좌표계의 경우 (ρ,θ,ϕ)(\rho, \theta, \phi)이다. (−100≤x,y,z≤100;(-100\le x, y, z\le 100; 0≤r,ρ≤100)0 \le r, \rho \le 100)

출력

각 테스트 케이스마다 한 줄에 변환한 좌표를 나타내는 세 실수를 출력한다.

절대오차 혹은 상대오차는 10−610^{-6}까지 허용한다.

예제3

  1. 예제 1

    입력
    6
    1 2
    1.00000000 2.00000000 3.00000000
    1 3
    1.00000000 2.00000000 3.00000000
    2 1
    2.23606798 1.10714872 3.00000000
    2 3
    2.23606798 1.10714872 3.00000000
    3 1
    3.74165739 0.64052231 1.10714872
    3 2
    3.74165739 0.64052231 1.10714872
    
    예상 출력
    2.23606798 1.10714872 3
    3.74165739 0.64052231 1.10714872
    1 2 3
    3.74165739 0.64052231 1.10714872
    1 2 3
    2.23606798 1.10714872 3
    
  2. 예제 2

    입력
    6
    1 2
    -1.00000000 -2.00000000 -3.00000000
    1 3
    -1.00000000 -2.00000000 -3.00000000
    2 1
    2.23606798 4.24874137 -3.00000000
    2 3
    2.23606798 4.24874137 -3.00000000
    3 1
    3.74165739 2.50107034 4.24874137
    3 2
    3.74165739 2.50107034 4.24874137
    
    예상 출력
    2.23606798 4.24874137 -3.00000000
    3.74165739 2.50107034 4.24874137
    -1 -2 -3
    3.74165739 2.50107034 4.24874137
    -1 -2 -3
    2.23606798 4.24874137 -3.00000000
    
  3. 예제 3

    입력
    6
    1 2
    0.00000000 0.00000000 0.00000000
    1 3
    0.00000000 0.00000000 0.00000000
    2 1
    0.00000000 0.00000000 0.00000000
    2 3
    0.00000000 0.00000000 0.00000000
    3 1
    0.00000000 0.00000000 0.00000000
    3 2
    0.00000000 0.00000000 0.00000000
    
    예상 출력
    0 0 0
    0 0 0
    0 0 0
    0 0 0
    0 0 0
    0 0 0