만드는 중입니다

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

선분과 점

면접 대비

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

요약
3차원 공간에서 선분 AB 위의 점 중 점 C와 가장 가까운 점을 찾아 거리를 소수점 열 자리로 출력합니다.
난이도

쉬움10점 중 3점

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

문제

3차원 좌표공간에 선분 하나와 점 하나가 있다. 선분의 두 끝점은 A(Ax,Ay,Az)A(A_x, A_y, A_z)와 B(Bx,By,Bz)B(B_x, B_y, B_z)이고, 점의 좌표는 C(Cx,Cy,Cz)C(C_x, C_y, C_z)이다.

선분 위의 점 중에서 CC에 가장 가까운 점을 찾아, 그 거리를 구하는 프로그램을 작성하시오. 이 값이 선분과 점 사이의 거리의 최솟값이다.

두 점 (x1,y1,z1)(x_1, y_1, z_1)과 (x2,y2,z2)(x_2, y_2, z_2) 사이의 거리는 (x2−x1)2+(y2−y1)2+(z2−z1)2\sqrt{(x_2-x_1)^2+(y_2-y_1)^2+(z_2-z_1)^2}이다.

AA와 BB가 같은 점일 수도 있다. 이때 선분은 점 하나로 줄어든다.

입력

첫째 줄에 아홉 개의 정수 AxA_x, AyA_y, AzA_z, BxB_x, ByB_y, BzB_z, CxC_x, CyC_y, CzC_z가 공백으로 구분되어 주어진다. 모든 좌표는 0 이상 10000 이하의 정수이다.

출력

첫째 줄에 선분과 점 사이의 거리의 최솟값을 소수점 아래 열째 자리에서 반올림해 출력한다. 값에 관계없이 소수점 아래 자릿수는 항상 정확히 10자리여야 한다. 예를 들어 답이 0이면 0.0000000000을 출력한다.

예제6

  1. 예제 1

    입력
    0 0 0 1 1 1 2 2 2
    
    예상 출력
    1.7320508076
    
  2. 예제 2

    입력
    0 0 0 10 10 10 5 5 5
    
    예상 출력
    0.0000000000
    
  3. 예제 3

    입력
    10 20 30 40 50 60 45 35 25
    
    예상 출력
    28.2842712475
    
  4. 예제 4

    입력
    0 0 0 1 1 1 0 0 1
    
    예상 출력
    0.8164965809
    
  5. 예제 5

    입력
    0 0 0 1 0 1 0 1 0
    
    예상 출력
    1.0000000000
    
  6. 예제 6

    입력
    0 0 0 1 1 1 7 6 5
    
    예상 출력
    8.7749643874