Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 극각을 기반으로 지정된 데카르트 점 세트를 정렬하는 프로그램

<시간/>

포인트라는 목록에 데카르트 포인트 세트가 있다고 가정합니다. 극각에 따라 분류해야 합니다. 극각은 0과 2*PI 범위에서 다양합니다. 일부 포인트의 극각이 같으면 원점에서 해당 포인트의 거리를 기준으로 정렬합니다.

따라서 입력이 점 =[(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(- 3,4)],

Python에서 극각을 기반으로 지정된 데카르트 점 세트를 정렬하는 프로그램

그러면 출력은 [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2) ]

Python에서 극각을 기반으로 지정된 데카르트 점 세트를 정렬하는 프로그램

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 비교기 기능 key()를 정의합니다. 시간이 걸립니다.
  • atan :=x[1]/x[0]의 tan-inverse
  • 쌍(atan, x[1]^2+x[0]^2) 반환 atan>=0 그렇지 않으면 (2*pi + atan, x[0]^2+x[1]^2)
  • 그런 다음 비교기 기능 키()를 사용하여 포인트 정렬

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

mathdef solve(points) 가져오기:def key(x):atan =math.atan2(x[1], x[0]) return (atan, x[1]**2+x[0]** 2) atan>=0인 경우 else (2*math.pi + atan, x[0]**2+x[1]**2) sorted(points, key=key)points =[(1,1) 반환 , (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]print(풀(점))

입력

[(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)] 

출력

[(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]