[GELÖST] Position in linearer Map
Übersicht

![]() |
FarbfinsternisBetreff: [GELÖST] Position in linearer Map |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wahrscheinlich ist die Antwort extrem banal, aber ich rupfe mir seit zwei Tagen die nicht vorhandenen Haare aus und komme nicht drauf.
Ich habe einen Speicherbereich in dem 4Byte lange Werte drin stehen. Dieser Speicherbereich stellt eine 2D Karte dar in der alle Zeilen hintereinander liegen. Mein Problem ist nun: wie berechne ich die Position x,y? Ich weiß wie breit die Zeilen sind und wieviele es sind und dass eine Zelle 4Byte gross ist. Jemand eine Idee? |
||
Farbfinsternis.tv |
- Zuletzt bearbeitet von Farbfinsternis am Sa, Jun 18, 2011 18:34, insgesamt einmal bearbeitet
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also nehmen wir an dein Speicher ist 20 Zellen lang, also 20 * 4 = 80 Byte.
Wir wissen, dass das Feld 5 Zellen breit ist und 4 Zellen lang/hoch. Nehmen wir einen Variable c die für jede Zelle um eins erhöht wird. Erste Zelle c = 0, letzte Zelle c = 19 Die X-Koordinate ist von der Zelle ist jetzt immer x = c Mod width. Die Y-Koordinate ist immer y = Floor(c / width). Ein Beispiel: Wir lesen Zelle 23 aus, also c = 22 x = 22 Mod 5 = 2 y = Floor(c / 5) = 4 Ich hoffe das ist was du suchst. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also das hört sich sehr nach TBank an.
Mit LoadBank kannst Du die Daten in einen Memorybereich hereinladen. Mit PeekLong(Adresse) jeweils 4 Bytes daraus abholen. Die Adresse einer Speicherstelle ist immer (Y*Breite + X)*4 BlitzBasic: [AUSKLAPPEN]
oder anders herum: BlitzBasic: [AUSKLAPPEN]
|
||
- Zuletzt bearbeitet von Midimaster am Sa, Jun 18, 2011 10:29, insgesamt einmal bearbeitet
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wahrscheinlich habe ich mich blöd ausgedrückt. Gegeben ist mir der besagte Speicher und die Variablen "column" und "row". Ich muss nun die Speicherzelle finden die dem entspricht.
@Midimaster: Das hat nichts mit BB/BMax zu tun, darum habe ich es in Offtopic gesteckt ![]() |
||
Farbfinsternis.tv |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab ja auch nur die Code-Box benutzt, damit der Code nach Code aussieht. Das System bleibt doch immer das gleiche...
BlitzBasic: [AUSKLAPPEN] Pos= 4 *( (Breite*Row) + Column )
|
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke schön Jungs, hat mir sehr geholfen! ![]() |
||
Farbfinsternis.tv |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group