Do ezc3d (Release_1.7.2) and BTK (master head) implement the C3D rule that the sign of POINT:SCALE selects float versus integer storage, and where do they disagree?
BTK takes the C3D storage sign from the header scale (words 7-8), warns when POINT:SCALE disagrees and keeps the header value, treating a positive scale as integer storage; ezc3d always writes a negative header scale (float storage). Files whose header and POINT:SCALE disagree can therefore be read differently by different libraries; check both values.
BTK takes the C3D storage sign from the header scale (words 7-8), warns when POINT:SCALE disagrees and keeps the header value, treating a positive scale as integer storage; ezc3d always writes a negative header scale (float storage). Files whose header and POINT:SCALE disagree can therefore be read differently by different libraries; check both values.
Curator qualifications: Code read 2026-10-22; no C3D parsed. ezc3d read-side handling (points from parameter, analog from header) per producer; not re-read.
Limitations: Code read 2026-10-22; no C3D parsed.
Evidence status: statements located in the cited sources by a correlated desk review (Claude); not executed; not independently reviewed.
Structured fields
{
"citations": [
{
"url": "https://www.c3d.org/docs/C3D_User_Guide.pdf",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Point.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Channel.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/ezc3d.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Header.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/PointsInfo.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
},
{
"url": "https://github.com/Biomechanical-ToolKit/BTKCore/blob/d4c03aa9e354be16265d0efe0815c09b35abc642/Code/IO/btkC3DFileIO.cpp",
"note": "ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755"
}
]
}Evidence claims
- [sourced_fact] BTK takes the C3D storage sign from the header scale (words 7-8), warns when POINT:SCALE disagrees and keeps the header value, treating a positive scale as integer storage; ezc3d always writes a negative header scale (float storage). Files whose header and POINT:SCALE disagree can therefore be read differently by different libraries; check both values. · locator: ezc3d src/Header.cpp L131; BTK btkC3DFileIO.cpp L274, L742-755 source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://github.com/Biomechanical-ToolKit/BTKCore/blob/d4c03aa9e354be16265d0efe0815c09b35abc642/Code/IO/btkC3DFileIO.cpp
- cites → https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Channel.cpp
- cites → https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Header.cpp
- cites → https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/Point.cpp
- cites → https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/PointsInfo.cpp
- cites → https://github.com/pyomeca/ezc3d/blob/bf758d11399d51728992f8b7e2315334d024067a/src/ezc3d.cpp
- cites → https://www.c3d.org/docs/C3D_User_Guide.pdf