만드는 중입니다

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

두 바퀴 버기

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

요약
두 바퀴 차량이 N개의 시간별 바퀴 속도 명령을 따라 움직일 때 차축 중심의 최종 위치를 소수점 다섯 자리까지 계산한다.
난이도

보통10점 중 5점

유형
기하, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

자동차 회사 International Car Production Company(ICPC)가 새 탈것 Two-Wheel Buggy를 개발하고 있다. 이름 그대로 바퀴가 두 개뿐인 탈것이다. 버기는 왼쪽 바퀴, 오른쪽 바퀴, 그리고 두 바퀴를 잇는 막대인 차축으로 이루어진다.


그림 1: 버기의 기본 구조

시제품을 만들기 전에 회사는 컴퓨터 시뮬레이션을 돌리기로 했다. 시뮬레이션의 규칙은 다음과 같다.

버기는 x-y 평면 위를 움직인다. 차축의 중심에서 각 바퀴까지의 거리를 DD라고 하자. 시뮬레이션이 시작할 때 차축의 중심은 (0,0)(0, 0), 왼쪽 바퀴는 (−D,0)(-D, 0), 오른쪽 바퀴는 (D,0)(D, 0)에 있고, 버기는 yy축의 양의 방향을 향한다. 두 바퀴의 반지름은 모두 1이다.


그림 2: 버기의 초기 위치

버기의 움직임은 명령의 나열로 조종한다. 명령 하나는 LspeedLspeed, RspeedRspeed, timetime 세 수로 이루어진다. LspeedLspeed와 RspeedRspeed는 각각 왼쪽 바퀴와 오른쪽 바퀴의 회전 속도이고 단위는 초당 각도이며, timetime은 두 바퀴가 그 속도를 유지하는 시간을 초 단위로 나타낸다. 속도가 양수이면 바퀴는 버기를 앞으로 나아가게 하는 방향으로 돌고, 음수이면 반대 방향으로 돈다. 예를 들어 LspeedLspeed를 −360-360으로 두면 왼쪽 바퀴는 버기를 뒤로 물러나게 하는 방향으로 1초에 한 바퀴 돈다. LspeedLspeed와 RspeedRspeed를 다르게 둘 수 있고, 그러면 버기가 왼쪽이나 오른쪽으로 꺾인다. 한쪽을 양수로, 다른 쪽을 음수로 둘 수도 있다. 이때 버기는 회전한다.


그림 3: 움직임의 예

명령의 나열이 주어질 때 버기의 최종 위치를 구하는 프로그램을 작성하라. 바퀴의 두께는 없고, 바퀴는 절대 미끄러지지 않는다고 가정한다.

입력

입력은 여러 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.

N D
Lspeed_1 Rspeed_1 time_1
...
Lspeed_N Rspeed_N time_N

데이터 집합의 첫 줄에는 양의 정수 NN과 DD가 주어진다 (1≤N≤1001 \le N \le 100, 1≤D≤101 \le D \le 10). NN은 명령의 개수이고, DD는 차축의 중심에서 각 바퀴까지의 거리다. 이어지는 NN개의 줄에는 ii번째 명령을 나타내는 정수 LspeediLspeed_i, RspeediRspeed_i, timeitime_i가 주어진다 (−360≤Lspeedi,Rspeedi≤360-360 \le Lspeed_i, Rspeed_i \le 360, 1≤timei1 \le time_i). 한 데이터 집합에서 timeitime_i의 합은 500 이하다.

두 개의 0으로 이루어진 줄이 입력의 끝을 알린다. 이 줄은 데이터 집합이 아니므로 처리하지 않는다.

출력

각 데이터 집합마다 차축 중심의 최종 위치를 두 줄에 출력한다. 첫 줄에 x좌표를, 둘째 줄에 y좌표를 출력한다. 두 좌표 모두 소수점 아래 다섯째 자리까지 반올림해 출력한다. 반올림한 값이 0이면 -0.00000이 아니라 0.00000을 출력한다. 그 밖의 문자는 출력하지 않는다.

예제3

  1. 예제 1

    입력
    1 1
    180 90 2
    1 1
    180 180 20
    2 10
    360 -360 5
    -90 360 8
    3 2
    100 60 9
    -72 -72 10
    -45 -225 5
    0 0
    
    예상 출력
    3.00000
    3.00000
    0.00000
    62.83185
    12.00000
    0.00000
    -2.44505
    13.12132
    
  2. 예제 2

    입력
    1 1
    360 360 1
    1 1
    -180 -180 1
    1 1
    0 0 1
    0 0
    
    예상 출력
    0.00000
    6.28319
    0.00000
    -3.14159
    0.00000
    0.00000
    
  3. 예제 3

    입력
    1 10
    360 360 500
    0 0
    
    예상 출력
    0.00000
    3141.59265