Làm cách nào để kiểm tra xem một đa giác có đơn điệu đối với một dòng không?


10

Người ta biết rằng đa giác đơn điệu đóng một vai trò quan trọng trong quá trình tam giác đa giác .

Định nghĩa: Một đa giác trong mặt phẳng được gọi là đơn điệu đối với đường thẳng L , nếu mọi đường thẳng trực giao với L cắt P nhiều nhất hai lần.PLLP

Cho một dòng và một đa giác P , có một thuật toán hiệu quả để xác định xem một đa giác P có đơn điệu đối với L không?LPPL

Câu trả lời:


10

xxO(n)

Kẻ phá đám ahoy:

IsMonotone (X [0..n-1], Y [0..n-1])
    local_mins ← 0
    cho tôi ← 0 đến n-1
        if (X [i] <X [i + 1 mod n]) và (X [i] <X [i-1 mod n])
            local_mins ← local_mins + 1
    trả lại (local_mins = 1)

Nếu bạn lo lắng rằng đa giác của bạn có thể có các cạnh dọc, hãy sử dụng chương trình con sau đây để thay thế X[i] < X[j]cho mối quan hệ nhất quán:

IsLess(X, i, j):
    return ((X[i] < X[j]) or (X[i] = X[j] and i < j))

Lax+by=cIsLess

IsLess(X, Y, i, j):
    Di ← a·X[i] + b·Y[i]
    Dj ← a·X[j] + b·Y[j]
    return ((Dj < Dj) or (Di = Dj and i < j))

1

x

  1. xO(n)

  2. Hai đỉnh này chia ranh giới của đa giác thành hai đường cong: chuỗi trên và chuỗi dưới.

  3. xO(n)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.