के अंदर एक आयताकार क्षेत्र पर पुनरावृत्ति के लिए एक एल्गोरिदम यह एक अजीब सवाल है जिसके लिए मुझे एक शीर्षक लिखना कठिन समय था।1 आयामी सरणी (बिटमैपिंग)
मैं पिक्सल (बिटमैप्स, अधिक विशेष रूप से) के साथ काम कर रहा हूं और प्रत्येक सरणी सेल को व्यावहारिक रूप से एक्सेस करने के लिए (सरल) गणित को नहीं समझ सकता।
मेरा कैनवास [एन 16 x 16] पिक्सेल है, एन हमेशा 1 या अधिक होता है।
यहाँ एक बुनियादी एन की एक तस्वीर है = 2 कैनवास:
http://i.imgur.com/mabwQfJ.png
मुझे क्या करना मेरी जादुई एल्गोरिथ्म को छू कि हल्के ग्रे क्षेत्र तो बिना 0 से 495 के लिए चलाया जाता है क्या चाहते हैं अंधेरे भूरे रंग के क्षेत्र को छूए बिना 16 से 512 तक (जो वास्तव में सेल 511 है, मेरा बुरा)।
तो, 0 से 15, को छोड़ 31 32 से 47 के द्वारा पीछा करने के लिए 16, आदि
और n के लिए = 3:
http://i.imgur.com/TqJMWl6.png
इस मामले में यह 0-735 हल्के भूरे रंग के क्षेत्रों को छोड़कर, 16-751 प्रत्येक तरफ के क्षेत्रों को छोड़कर और गहरे भूरे रंग के क्षेत्रों को छोड़कर 32-767 होगा।
मैं क्या करने की कोशिश की:
यहाँ मेरी कोड से एक उद्धरण है, उम्मीद है कि यह उपयोगी है और पता चलता है कि मैं पहले से ही करने की कोशिश की। यह वह हिस्सा है जो 'idxpos' के मान को दर्शाता है।
// Let's say length = 3 for now.
for (int character = 0; character < length; ++character)
{
// in case you're wondering, it grabs 16x16 characters from an ASCII spritesheet
charpos = (string[character] - ' ') * 16 * 16;
// Runs through the spritesheet character map
// this is a huge 16x1520 bitmap.
for (int pixel = 0; pixel < 16 * 16; ++pixel)
{
// ignore this, just me messing around with pixel tinting
r = (((CharMap[charpos + pixel] >> 0) & 0xFF) + 255 - u);
g = (((CharMap[charpos + pixel] >> 8) & 0xFF) + 255 - v);
b = (((CharMap[charpos + pixel] >> 16) & 0xFF) + 255 - w);
newcolour = RGB(r, g, b);
// THIS is the part I am stuck on:
idxpos = pixel + (character * 16 * 16);
bitmap[idxpos] = CharMap[charpos + j];
}
}
आपको शायद यह विचार मिलता है। यह मेरे लिए आसान सरल लगता है लेकिन मैं इसे समझ नहीं सकता।
ओह, और मुझे कुछ जादुई पुस्तकालय में दिलचस्पी नहीं है जो मेरे लिए मेरे सभी बिटमैप सामान को संभाल सकता है, मैं ऐसी स्थिति में नहीं हूं जहां मैं एक का उपयोग कर सकूं।
हमेशा रेंज [0 पुनरावृत्ति के लिए एक xy पाश बनाने, 496 यह केवल संदर्भ के रूप में बिटमैप
width
की जरूरत है) विशेष रूप से: पंक्ति = i/16; कॉलम = i% 16; gray_index = पंक्ति * total_number_of_columns + current_gray * 16 + कॉलम; –मुझे यह समझ में नहीं आ रहा है "इस मामले में यह हल्का भूरे रंग के क्षेत्रों को छोड़कर 0-735 होगा, 16-751 प्रत्येक तरफ के क्षेत्रों को छोड़कर और गहरे भूरे रंग के क्षेत्रों को छोड़कर 32-767 छोड़ देगा।" क्या यह सही है? – ANjaNA
मुझे उपरोक्त चित्र पसंद हैं। इससे आपको मुझसे कुछ अतिरिक्त प्यार मिल जाता है। –