Das ist eine seltsame Frage, für die ich Schwierigkeiten hatte, einen Titel zu schreiben.
Ich arbeite mit Pixeln (genauer Bitmaps) und kann die (einfache) Mathematik für den pragmatischen Zugriff auf jede Array-Zelle nicht herausfinden.
Meine Leinwand ist [n16 x 16] Pixel, n ist immer 1 oder größer.
Hier ist ein Foto eines grundlegenden n = 2 Canvas:
Ich möchte, dass mein magischer Algorithmus von 0 bis 495 läuft, ohne den helleren grauen Bereich zu berühren, dann von 16 auf 512 (was tatsächlich Zelle 511 ist, mein schlechter), ohne den dunkelgrauen Bereich zu berühren.
Also, 0 bis 15, überspringe 16 bis 31, gefolgt von 32 bis 47 usw.
Und für n = 3:
In diesem Fall würde 0-735 die helleren grauen Bereiche übersprin- gen, 16-751 die Bereiche auf jeder Seite übersprin- gen und 32-767 die dunkleren grauen Bereiche übersprin- gen.
Was ich versucht habe:
Hier ist ein Auszug aus meinem Code, hoffentlich ist es nützlich und zeigt, was ich schon versucht habe. Es ist der Teil, der den Wert für 'idxpos' ermittelt.
%Vor%Sie haben wahrscheinlich die Idee. Es klingt einfach für mich, aber ich kann es nicht herausfinden.
Oh, und ich bin nicht an einer magischen Bibliothek interessiert, die all meine Bitmap-Sachen für mich verarbeiten kann, ich bin nicht in einer Position, in der ich eine verwenden kann.
Wenn ich Ihre Frage richtig beantworte, möchten Sie sie in der von Ihnen genannten Reihenfolge besuchen. Hier ist der Code, der das tut (gegeben n ):
%Vor%Hoffe, das hilft.
Es ist einfach genug. Nehmen wir n
als Multiplikator der Rechteckgesamtbreite und bitmap
als Rechteckdaten:
Nun sagen Sie, dass Sie es auf dem zweiten Quadrat oder Quadrat des Index square = 1
machen wollen:
Sie können auch eine allgemeinere Funktion für alle Formen von Bitmaps verwenden, die ein rect verwenden und Ihnen erlauben, Daten in jedem beliebigen Rechteck innerhalb Ihrer Bitmap zu ändern. Es benötigt nur die Bitmap width
als Referenz: