만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

드론 제어

시간 제한2초메모리 제한1024 MB

요약
피치, 롤, 요 목표값이 주어질 때 이를 만족하면서 플랩 각도의 최대 절댓값을 가장 작게 하는 네 각도 n, e, s, w를 구합니다.
난이도

보통10점 중 6점

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

문제

당신은 Single Copter라는 흥미로운 비행체의 컨트롤러를 설계하고 있다. 이 비행체에는 프로펠러가 하나뿐이지만, 배출되는 공기 흐름은 네 개의 플랩으로 한 번 더 조절된다. 플랩은 피치, 롤, 요 세 개의 오일러 각을 제어하며, 기체가 요청받은 자세를 유지하도록 돕는다. 각 플랩은 비행 컨트롤러가 요청하는 임의의 각도를 가질 수 있고, 플랩이 특정 각도에 있으면 피치, 롤, 요 방향으로 요청된 힘이 작용한다.

피치롤요

그림 D.1: Single Copter의 피치, 롤, 요

플랩의 각도를 nn, ee, ss, ww로 두자. 각각 north, east, south, west를 뜻한다. 피치, 롤, 요 방향의 힘은 다음 식으로 정의된다.

p=e−wr=n−sy=n+e+s+w\begin{aligned} p &= e - w \\ r &= n - s \\ y &= n + e + s + w \end{aligned}

변수는 네 개이고 제약은 세 개이다. 공기역학의 관점에서 플랩 각의 최댓값을 작게 만드는 것이 타당하므로, max⁡{∣n∣,∣e∣,∣s∣,∣w∣}\max\{|n|, |e|, |s|, |w|\}도 최소화해야 한다.

요청된 피치, 롤, 요를 얻도록 Single Copter에 보낼 최적의 매개변수를 구하라.

입력

첫 줄에 요청의 개수 qq (1≤q≤1041 \le q \le 10^4)가 주어진다. 이어지는 qq개의 줄에는 각각 실수 pip_i, rir_i, yiy_i (−1≤pi,ri,yi≤+1-1 \le p_i, r_i, y_i \le +1)가 주어진다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 요청에 대한 해 nin_i, eie_i, sis_i, wiw_i를 공백으로 구분하여 출력한다.

결과로 나오는 피치, 롤, 요가 요청값과 10−610^{-6} 이하의 차이로 맞고, 플랩 출력값의 절댓값 최댓값이 참값보다 10−610^{-6} 이상 크지 않으면 정답으로 인정한다.

예제1

  1. 예제 1

    입력
    8
    0 0 0
    1 0 0
    0 1 0
    0 0 1
    1 1 0
    1 0 1
    0 1 1
    1 1 1
    
    예상 출력
    0.0 0.0 0.0 0.0
    0.0 0.5 0.0 -0.5
    0.5 0.0 -0.5 0.0
    0.25 0.25 0.25 0.25
    0.5 0.5 -0.5 -0.5
    0.5 0.5 0.5 -0.5
    0.5 0.5 -0.5 0.5
    0.75 0.75 -0.25 -0.25