말파티 원

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

요약
삼각형의 세 꼭짓점이 주어질 때 말파티 원의 반지름 세 개를 알려진 폐쇄형 공식으로 계산하는 문제입니다.
난이도

보통10점 중 6점

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

문제

삼각형이 하나 주어졌을 때, 그 내부에 원 세 개를 각 원이 나머지 두 원과 삼각형의 두 변에 모두 접하도록 그릴 수 있다. 이렇게 그린 세 원을 말파티 원(Malfatti circles)이라고 한다. 많은 수학자들이 두 세기가 넘도록 말파티 원을 연구해 왔으며, 임의의 삼각형에 대해 말파티 원은 항상 존재하고 유일하다는 사실이 증명되어 있다.

예를 들어 삼각형의 세 꼭짓점이 (20, 80), (-40, -20), (120, -20)이면 말파티 원은 다음과 같다.

  • 중심 (24.281677, 45.219486), 반지름 21.565935
  • 중심 (3.110950, 4.409005), 반지름 24.409005
  • 중심 (54.556724, 7.107493), 반지름 27.107493

또한 세 꼭짓점이 (20, -20), (120, -20), (-40, 80)이면 말파티 원은 다음과 같다.

  • 중심 (25.629089, -10.057956), 반지름 9.942044
  • 중심 (53.225883, -0.849435), 반지름 19.150565
  • 중심 (19.701191, 19.203466), 반지름 19.913790

삼각형이 주어졌을 때 세 말파티 원의 반지름을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 여섯 개의 정수 x1,y1,x2,y2,x3,y3x_1, y_1, x_2, y_2, x_3, y_3이 공백으로 구분되어 주어진다. 이는 삼각형의 세 꼭짓점 (x1,y1)(x_1, y_1), (x2,y2)(x_2, y_2), (x3,y3)(x_3, y_3)의 좌표이며, 반시계 방향 순서로 주어진다. 입력은 다음 조건을 만족한다.

  1. 모든 좌표는 −1000-1000보다 크고 10001000보다 작다.
  2. 반지름이 0.10.1보다 작은 말파티 원은 존재하지 않는다.

입력의 마지막 줄에는 00이 여섯 개 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 세 말파티 원의 반지름 r1r_1, r2r_2, r3r_3을 한 줄에 공백으로 구분하여 출력한다. rir_i는 꼭짓점 (xi,yi)(x_i, y_i)에 가장 가까운 원의 반지름이다. 각 반지름은 소수점 일곱째 자리에서 반올림하여 소수점 아래 여섯 자리까지 출력한다.

예제1

  1. 예제 1

    입력
    20 80 -40 -20 120 -20
    20 -20 120 -20 -40 80
    0 0 1 0 0 1
    0 0 999 1 -999 1
    897 -916 847 -972 890 -925
    999 999 -999 -998 -998 -999
    -999 -999 999 -999 0 731
    -999 -999 999 -464 -464 999
    979 -436 -955 -337 157 -439
    0 0 0 0 0 0
    
    예상 출력
    21.565935 24.409005 27.107493
    9.942044 19.150565 19.913790
    0.148847 0.207107 0.207107
    0.125125 0.499750 0.499750
    0.373458 0.383897 0.100456
    0.706768 0.353509 0.353509
    365.638023 365.638023 365.601038
    378.524085 378.605339 378.605339
    21.895803 22.052921 5.895714