को बड़ा आयत मैं एल्गोरिथ्म जो छोटे लोगों को बड़ा स्थिर आकार आयत विभाजन की जरूरत है। मेरे लिए एक आदर्श क्रियान्वयन ऐसा दिखाई:विभाजन छोटे लोगों (2 डी पैकिंग)
struct RECT
{
int l,t,r,b;
};
class BigRect
{
public:
// width and height of big rect
BigRect(unsigned width, unsigned height);
// returns -1 if rect cannot be allocated, otherwise returns id of found rect
int GetRect(unsigned width, unsigned height, RECT &out);
// returns allocated rect to big rectangle
void FreeRect(int id);
};
void test()
{
BigRect r(10, 10);
RECT out;
r.GetRect(4, 4, out); // rect found ({0,0,4,4} for example), returns 1
r.GetRect(5, 5, out); // rect found ({4,0,9,5} for example), returns 2
r.GetRect(6, 6, out); // no place found for rect, returns -1
r.FreeRect(2); // add {4,0,9,5} back to rect
r.GetRect(6, 6, out); // rect found (4,0,10,6)
}
तो मैं GetRect
और FreeRect
तरीकों के लिए एल्गोरिथ्म की जरूरत है। किसी भी विचार और लिंक की सराहना की जाएगी।
यह होमवर्क की तरह बदबू आ रही है:
भी gamedev पर इस संबंधित प्रश्न देखें। –
क्या उप-आयत आवंटित किए जाने पर कोई प्रतिबंध है? जैसे आयत को कुशलता से पैक करने का कोई लक्ष्य है, या क्या आप उन्हें फिट कर सकते हैं कहीं भी फिट बैठेंगे? – verdesmarald
@ जीन-पॉल काल्डरोन। यह होमवर्क नहीं है। निश्चित रूप से @veredesmarald उन्हें कुशलता से आवंटित करना बेहतर होगा। –