あれ?やっぱ分かりずらかったらしい・・・・
C++の話で
https://cside-associatron.blogspot.com/2026/08/c.html
「64×64の各セルの中に、さらに100×100の配列が入ってるのか?」
って、100×100の配列をセルに放り込んでるわけじゃない。
1個のセルをこう考えると
64×64 の世界cell[12][25]│└── このセルの担当範囲local X = 0~99local Y = 0~99
つまり cell[12][25] の中に
float local[100][100];
を持っているわけじゃないんですよ。
「そのセルの中なら、位置を0~99で表現できますよ」という座標系を与えているだけ。
だから、たとえば接触した位置が
cell = (12, 25)local = (37, 81)
だったら、
12列25行目のセルの中の、横37・縦81の位置に触れた
という情報だけ持てばいい。
これを全体の論理座標に直すと、
globalX = 12 × 100 + 37 = 1237globalY = 25 × 100 + 81 = 2581
になる。
つまり、
64 × 100 = 6400
だから、
64×64 cells↓each cell has a 100×100 coordinate range↓logical coordinate space = 6400×6400
になる。
でもメモリ上に、
64 × 64 × 100 × 100= 40,960,000
個の要素を作っているわけではありません。
100×100は「次元を放り込む」のではなく、「セル内部をどの細かさで住所表現するか」なんですよ。
もっと身近に言えば、住所と同じ。
東京都
└─ 大田区
└─ 田園調布
└─ 1番地
└─ 2番地
└─ 3番地
└─ …
Atraに置き換えると、
64×64 のセル↓cell(12,25)↓そのセルの内部を 100×100 の座標で指定できる↓local(37,81)
という関係。
つまり、「田園調布」という場所の中に、最初から全番地の建物を作っておく必要はない。「東京都・大田区・田園調布・○番地」という住所体系さえ定義されていれば、その場所を指定できる。
Atraも同じで、
cell(12,25) / local(37,81)
という住所を指定できるだけで、
cell[12][25][100][100]
みたいな巨大な実配列を作っているわけではないということでしたー。
巨大化させないよう、必死なんすよw
0 件のコメント:
コメントを投稿