Various coordinate systems are used for different tasks throughout the codebase so it can be useful to have a reference for how they work and relate to each other.
A not necessarily exhaustive list:
- "world" coordinates
- chunk coordinates
- weather sim cell coordinates
- "regions" used on the server for syncing to clients
- coordinate spaces used during rendering in voxygen
- LoD zones (see
Note: This document is unfinished and details for more of these could be included.
World coordinates can actually be broken down into two different kinds.
There are non-integer positions currently represented via
Vec3<f32>, e.g. which can be used to
represent an entity position.
Then there are integer positions currently represented via
Vec3<i32>, e.g. which can be used
for the position of a voxel in the world. The coordinates of the voxel containing a
point can be obtained via
.floor() as i32 on each element of the
Vec3. Consequently, when the
integer position of a voxel is directly converted to a
Vec3<f32>, this is located at the minimum
corner of that voxel. To obtain the center of a voxel in that space
0.5 must be added to each
element of the position.