2011-10-11 41 views
6

Tôi đang cố gắng hiển thị đa giác, nhưng chúng chỉ có thể được hiển thị bằng hình chữ nhật được căn chỉnh theo trục. Vì vậy, tôi đang tìm kiếm một thuật toán về cơ bản có thể điền vào một đa giác bằng cách sử dụng số lượng hình chữ nhật có thể là ít nhất. Nếu nó giúp giảm số lượng, các hình chữ nhật được phép chồng lên nhau.Điền một đa giác với số lượng hình chữ nhật tối thiểu

Tôi đã triển khai this fill algorithm, hầu hết là đủ. Sự sụp đổ là nó hạn chế hình chữ nhật cho mỗi hàng pixel. Cuối cùng tôi muốn giảm số lượng hình chữ nhật càng nhiều càng tốt.

+0

Tôi giả định từ câu hỏi rằng đa giác được pixelated? một đa giác dựa trên vector sẽ không thể được lấp đầy với bất kỳ số lượng hữu hạn của hình chữ nhật liên kết trục ngoại trừ trong trường hợp đặc ... – Chris

Trả lời

1

Biểu thị pixel đa giác giống như đa giác tuyến tính và bạn có thể phân vùng nó khá nhanh. Xem câu trả lời cho số này question.

0

Xóa giới hạn đó (mỗi hình chữ nhật có chiều cao 1 pixel) sẽ giúp trong một số trường hợp đặc biệt khi đa giác được tạo thành từ hình chữ nhật lớn, nhưng hoàn toàn không phải trong trường hợp chung. Làm thế nào về điều này: sử dụng thuật toán đó, nhưng mở rộng mỗi hình chữ nhật lên và xuống càng nhiều càng tốt, và khi tất cả các hình chữ nhật được đặt ra, loại bỏ các hình chữ nhật thừa.

Vẫn còn một chút để cải thiện, trong đó đặt hàng trong đó bạn loại bỏ hình chữ nhật thừa có thể quan trọng trong một số trường hợp rất hiếm, nhưng thành thật mà nói tôi không nghĩ là đáng lo ngại về giải pháp thực tế .

+0

Khi tôi nghĩ về nó, tôi có thể xử lý các hàng như một loạt các hình chữ nhật, và sau đó áp dụng các phương pháp được đề xuất trong [câu hỏi này] (http://stackoverflow.com/questions/5919298/algorithm-for-finding-the-fewest-rectangles-to-cover-a-set-of-rectangularles). –

Các vấn đề liên quan