Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมเรียงจุด Cartesian ตามมุม Polar Angle ใน Python

ให้จุด Cartesian points เรียงตามมุม Polar (0 ถึง 2π) มุมเท่ากัน เรียงตามระยะห่างจาก Origin

ตัวอย่าง: [(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)]

ขั้นตอน

  1. Key Function: atan2(y,x) ได้มุม -π ถึง π
  2. ถ้า มุม ≥ 0: (atan, x²+y²)
  3. ถ้า มุม < 0: (2π+atan, x²+y²)
  4. เรียงด้วย Key นี้

ตัวอย่างโค้ด

import math

def solve(points):
    def key(x):
        atan = math.atan2(x[1], x[0])
        return (atan, x[1]**2+x[0]**2) if atan >= 0 else (2*math.pi + atan, x[0]**2+x[1]**2)
    return sorted(points, key=key)

points = [(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]
print(solve(points))
# Output: [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]

อินพุต

[(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)]