Measurement System
Overview
The wedding band builder uses a measurement system grounded in real world millimeter dimensions. All 3D geometry -- ring profiles, diamond models, and engraving paths -- is authored in millimeters, typically exported from Rhino .3dm files. A rendering scale factor (rootScale = 0.1) is applied to the 3D scene for visual purposes, but all measurement calculations operate in the original millimeter coordinate space.
This document covers how each measurement type works, what units are available, and how conversions between units are performed.
User-Facing Guide
For a higher-level overview of measurements aimed at end users (how to read ring sizes, understand diamond carats, and interpret the price breakdown), see the Ring Measurements Guide.
Ring Dimensions (Width and Thickness)
How It Works
Ring width and thickness are controlled through multiplier sliders rather than absolute millimeter inputs. Each ring profile has a raw bounding-box dimension measured from the imported geometry:
- Raw width -- the horizontal span of the profile cross section in mm
- Raw height -- the vertical span (thickness) of the profile cross section in mm
The slider value is a multiplier on these raw dimensions:
actualMm = rawDimension x multiplierSlider Ranges
| Dimension | Multiplier min | Multiplier max | Example (4mm raw profile) |
|---|---|---|---|
| Width | 0.5x | 2.0x | 2mm -- 8mm |
| Thickness | 0.5x | 1.5x | 2mm -- 6mm |
WARNING
Width and thickness sliders apply multipliers (0.5x to 2.0x) to the profile's base dimensions. A multiplier of 1.5x on a profile with a 3mm base width gives 4.5mm, but the same 1.5x on a different profile with a 4mm base width gives 6mm. If building custom UI, convert to actual millimeters before displaying to users.
UI Display
The tape ruler slider shows actual millimeter values at the min and max ends, computed from the raw profile dimensions and the multiplier range. The current value is displayed as the actual mm measurement.
Ring Size
How It Works
Ring size is stored internally as the inner radius in millimeters. The sizing slider operates on inner diameter (radius x 2) and snaps to standard jeweler reference values.
When a ring size changes in a multi-band configuration, matchBaseHeight() is called to keep all bands aligned at their base edges.
Supported Sizing Systems
The UI provides a toggle between three international sizing systems:
| System | Range | Diameter display unit |
|---|---|---|
| US | 3 -- 13 (half sizes) | Inner diameter in inches |
| EU | 44 -- 69 | Inner diameter in mm |
| UK | F -- Z | Inner diameter in mm |
Default ring size: radius of ~10mm (approximately US size 10).
Display Format
Each size is shown as: [size label] . [inner diameter]
- US example:
7 . 0.68 in - EU example:
54 . 17.3 mm - UK example:
N1/2 . 17.3 mm
US sizes display the inner diameter in inches (diameter mm / 25.4), while EU and UK sizes display it in millimeters.
Size Conversion Reference
The following table maps between all three sizing systems. Inner radius is the value stored internally; inner diameter is what the user sees.
| US Size | EU Size | UK Size | Inner Radius (mm) | Inner Diameter (mm) |
|---|---|---|---|---|
| 3 | 44 | F | 7.02 | 14.04 |
| 3.5 | 45 | G | 7.22 | 14.44 |
| 4 | 47 | H | 7.43 | 14.86 |
| 4.5 | 48 | I | 7.64 | 15.28 |
| 5 | 49 | J1/2 | 7.85 | 15.70 |
| 5.5 | 50 | K | 8.05 | 16.10 |
| 6 | 52 | L1/2 | 8.26 | 16.52 |
| 6.5 | 53 | M | 8.46 | 16.92 |
| 7 | 54 | N1/2 | 8.67 | 17.34 |
| 7.5 | 56 | O | 8.87 | 17.74 |
| 8 | 57 | P1/2 | 9.10 | 18.20 |
| 8.5 | 58 | Q | 9.27 | 18.54 |
| 9 | 59 | R1/2 | 9.45 | 18.90 |
| 9.5 | 61 | S | 9.68 | 19.36 |
| 10 | 62 | T1/2 | 9.92 | 19.84 |
| 10.5 | 64 | U1/2 | 10.13 | 20.26 |
| 11 | 65 | V1/2 | 10.34 | 20.68 |
| 11.5 | 66 | W | 10.54 | 21.08 |
| 12 | 67 | X1/2 | 10.74 | 21.48 |
| 12.5 | 68 | Y | 10.95 | 21.90 |
| 13 | 69 | Z | 11.16 | 22.32 |
Diamond Stone Size
How It Works
Diamond size is controlled through a multiplier on a base reference diameter. The base diamond model (diamond_single.glb) has a bounding-box diameter of 0.616mm at stoneSize = 1.
diameterMm = 0.616 x stoneSizeSlider Range
| Multiplier | Diameter (mm) |
|---|---|
| 0.5x (min) | 0.31mm |
| 1.0x | 0.616mm |
| 3.0x (max) | 1.85mm |
Display Units
The UI provides a toggle between two unit systems:
Millimeters -- Shows the actual computed diameter:
diameterMm = 0.616 x stoneSizeCarats -- Approximated using a round brilliant formula:
carats = diameterMm^3 x 0.00366TIP
The carat formula (diameter³ × 0.00366) is a standard round brilliant approximation accurate to ±5%. For certified stones, use the actual carat weight from your supplier rather than this computed value.
This cubic approximation models the relationship between a round brilliant diamond's diameter and its carat weight. It has been verified against standard gemological reference charts:
| Diameter (mm) | Computed carats | Standard reference |
|---|---|---|
| 4.0 | ~0.23 ct | 0.25 ct |
| 5.0 | ~0.46 ct | 0.50 ct |
| 6.5 | ~1.00 ct | 1.00 ct |
| 8.0 | ~1.88 ct | 2.00 ct |
Price Calculation
How It Works
Ring pricing is computed from the physical volume of metal, using a three-step process based on Pappus's centroid theorem.
Step 1: Volume (Pappus's Theorem)
The ring is a solid of revolution. Its volume is computed as:
volumeMm3 = crossSectionArea x 2pi x radiusWhere:
crossSectionAreais the area of the ring's profile cross section in mm squaredradiusis the ring's inner radius in mm
This is exact for any profile shape revolved around a central axis.
Step 2: Metal Weight
Volume is converted to weight using the metal's density:
volumeCm3 = volumeMm3 / 1000
weightGrams = volumeCm3 x densityGcm3The default density is 15.5 g/cm cubed, which corresponds to 18K gold. Different metals use different densities (e.g., platinum is approximately 21.4 g/cm cubed).
Step 3: Price
priceUsd = weightGrams x pricePerGramThe default price per gram is $97/gram. This value is configurable and can be adjusted per metal type.
Weight Units
The pricing service supports three weight units for price input:
| Unit | Grams per unit |
|---|---|
| Gram | 1.0 |
| Ounce | 28.3495 |
| Troy ounce | 31.1035 |
When a price is specified per ounce or per troy ounce, it is internally converted to price-per-gram before the final calculation.
Coordinate System Notes
- All geometry is authored in millimeters in the source CAD files (Rhino
.3dm) - Diamond models share the same mm coordinate space as ring profiles
- A
rootScale = 0.1is applied at the scene level for rendering, but this does not affect any measurement or pricing calculations - Profile dimensions are measured from the geometry's axis-aligned bounding box
- The cross section area used for pricing is computed from the actual profile polygon, not the bounding box