Measure tie spans: a constant first word and three quantized floats
Range measured: all 1864 tie spans across 27 levels, read at each class entry's
geometry offset.
Method: read +0x00, +0x0c and the three f32 at +0x10, +0x14, +0x18, and count
distinct values per position.
Result:
u32@+0x00 takes exactly one value across all 1864 spans: 0x00000100, 256
+0x0c takes 83 distinct values, so it is not constant
the three floats take 103 distinct triples built from 42 distinct values,
and those values are round -- 4, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30
with only 10 of the 42 exact powers of two
Two level 0 spans open:
+000 00000100 00005070 000065c0 07050612
+010 41400000 41c80000 42200000 00009460
+000 00000100 00007ca0 0000a040 0605091e
+010 41400000 41c80000 42200000 0000ddf0
This rules out the bounding-box reading. A box would take continuous values;
these come from a 42-value set of round numbers, so they are authored or
quantised quantities -- a grid, a size class, or LOD thresholds -- and nothing
measured separates those.
Correction: these floats were previously read as a bounding-box minimum, from
level 0's first two spans happening to share (12.0, 25.0, 40.0). That triple
holds on 266 of 1864 spans, not all of them, and the value set is quantised.
Not decoded: what the three floats are, what 0x100 at +0x00 counts, and what
the 83 values at +0x0c are.
This commit is contained in:
@@ -1405,3 +1405,43 @@ checked yet.
|
||||
not be listed as unparsed geometry. What it contains *after* the descriptor is
|
||||
still unknown, and the file is large enough that the descriptor is unlikely to
|
||||
be all of it.
|
||||
|
||||
## Tie spans: a constant first word, and three quantized floats
|
||||
|
||||
**Range measured:** all **1,864 tie spans across 27 levels**, read at each
|
||||
class entry's geometry offset.
|
||||
|
||||
**Method:** read `+0x00`, `+0x0c` and the three `f32` at `+0x10`, `+0x14`,
|
||||
`+0x18`, and count distinct values per position.
|
||||
|
||||
**Result:**
|
||||
|
||||
- `u32@+0x00` takes **exactly one value across all 1,864 spans** -- `0x00000100`,
|
||||
256. A constant first word across the whole disc.
|
||||
- `+0x0c` takes **83 distinct values**, so it is not constant.
|
||||
- The three floats take **103 distinct triples** built from **42 distinct
|
||||
values**, and those values are round: 4, 8, 9, 10, 12, 15, 16, 18, 20, 24,
|
||||
25, 30 ... Only 10 of the 42 are exact powers of two.
|
||||
|
||||
Two spans on level 0 open:
|
||||
|
||||
+000 00000100 00005070 000065c0 07050612
|
||||
+010 41400000 41c80000 42200000 00009460
|
||||
|
||||
and the same second, different first-two:
|
||||
|
||||
+000 00000100 00007ca0 0000a040 0605091e
|
||||
+010 41400000 41c80000 42200000 0000ddf0
|
||||
|
||||
**What this rules out.** The three floats are not a general bounding box: a box
|
||||
would take continuous values, and these come from a 42-value set of round
|
||||
numbers. They are authored or quantised quantities -- a grid, a size class, or a
|
||||
set of LOD thresholds -- and nothing measured here separates those.
|
||||
|
||||
**Correction to an earlier reading.** These floats were previously read as a
|
||||
bounding-box minimum, from level 0's first two spans happening to share
|
||||
(12.0, 25.0, 40.0). That triple holds on 266 of 1,864 spans, not all of them,
|
||||
and the value set is quantised. The bounding-box reading does not survive.
|
||||
|
||||
**Not decoded:** what the three floats are, what `0x100` at `+0x00` counts,
|
||||
and what the 83 values at `+0x0c` are.
|
||||
|
||||
Reference in New Issue
Block a user