Coordinate system & units
How Kaleidoscope Plan stores geometry, metres, the x/z floor plane, precision, and unit display.
Everything in a drawing is stored in real-world coordinates. Understanding the model helps you reason about precision, units and what survives a round-trip.
The world model
Geometry is stored as 2-D points on the floor plane, in metres:
- A point is
{ x, z },xruns right,zruns “into” the plan (depth). The naming comes from Apple’s RoomPlan, whose 3-D output hasyas up; the floor sits aty = 0, so plan data usesxandz. Keeping thezname means the saved file matches Apple’s vocabulary exactly. - The origin and orientation depend on where you started a scan or drawing. The app never assumes a fixed origin or a particular rotation, north-up is not imposed.
- On screen, increasing
zmaps straight to “down the page” (no axis flip), which is the standard top-down plan-view reading.
Units
Set your working unit in Settings:
| Unit | Notes |
|---|---|
| Meters | Default |
| Feet | Imperial display (decimal feet) |
| Millimetres | Fine detail work |
| Feet & inches | Imperial display as feet and whole inches, like 8' 4" |
Units are a display choice only. Geometry is always stored in metres, so switching units never moves anything, it just changes how lengths are shown and entered. Areas display in the matching square unit (m², ft² or mm²).
Precision & tolerances
The app works to sub-millimetre numerical precision, with a few deliberate real-world tolerances baked into editing:
- Corner coincidence: endpoints within 5 mm are treated as meeting at a corner (for clean junctions).
- Propagation / linking: endpoints within 1 cm are treated as coincident when walls move, so neighbours follow correctly.
- Wall-drag step: with the Walls tool’s snap toggle on, pulling a wall perpendicular snaps on whole 100 mm steps.
- Minimum wall-layer thickness: 20 mm (0.02 m).
- Degenerate geometry: walls shorter than ~31 µm are flagged as degenerate by validation.
These tolerances are why a scan with tiny float differences at its corners still reads as a clean, closed room.
Editing snaps
Beyond the built-in tolerances, a few snaps put you in control while you draw:
- Alignment snap (the Snap toggle, on by default): as you draw, slide and move things, the canvas locks onto corners, wall midpoints and X/Z alignment with nearby walls. A small CAD-style marker shows exactly what you locked onto, a square for a corner, a triangle for a midpoint, a circle for axis alignment, plus a dashed guide when you aligned to something further away. Doors, windows and openings also snap to the middle of their wall. On a Mac, or an iPad with a hardware keyboard, holding ⇧ turns alignment snapping on for exactly as long as it’s held.
- Number snap: a second bubble cycles Off → 5 cm → 10 cm → 50 cm; long-pressing it (or right-clicking on Mac) opens a dialog where you can set any increment you like, say 3350 mm, in your chosen unit. A value of zero or less turns it off; very large values are capped (30 m). Whatever you place, draw or move then lands on clean multiples. Tapping a custom value switches it off, and the value is remembered for next time.
- Angle lock: an Angle lock bubble appears while the Line draw is armed (off by default). With it on, the line you’re drawing is constrained to the nearest 0°, 45°, 90° or 135° from its start, keeping the length you’ve dragged, the classic “hold to draw straight” behaviour. An exact corner snap still wins over the lock.
What this means for you
- Real measurements in, real measurements out. A 4 m wall is 4 m at every zoom level; nothing rescales with the view.
- Switching units is safe and reversible. Work in millimetres for a detail, then switch back to metres, the model is unchanged.
- Round-trips are stable. Saving and reloading a
.kalarpreserves geometry exactly; see File formats.