A pressure map of every sleeper
Each participant lay on their back on every prototype while an XSensor mat recorded contact pressure: 64 × 160 sensors at half-inch spacing, covering the whole 32 × 80 inch sleep surface.
Shoulder blades, sacrum and heels carry the peaks. The small of the back barely touches, and that gap is exactly what the bed needs to fill.
Switch Body in the bar above. Hover the map to read any sensor.
Supine pressure, XSensor style
Hover the map to read a sensor
How each prototype gives
The bed is a square gel grid, one inch on a side, with a circular stub where the walls meet. Each prototype was compression tested for its pressure–displacement curve.
The grid gives easily at first, then stiffens as the walls buckle and fold onto the stubs. A larger stub makes the whole curve stiffer, so stub size alone tunes the support.
Move across the chart to compare the beds at any pressure.
Pressure to depth
Move across the chart
Grid close-up
Filled: current stub. Outlines: A and D.
From pressure to depth
Every sensor is passed through that bed's curve, turning the pressure map into a depth map of how far the body sinks.
The algorithm then finds the shoulders and hips as the heaviest rows of depth, centers a nine-cell spine band on the body's center of pressure, and runs it from the base of the neck to the hips.
Change Mattress and watch the hips sink past the shoulders on the softer beds.
Depth, with landmarks found by the algorithm
Hover the map to read a cell
Does the bed hold a neutral spine?
At each step down the band, the spine depth is the median of a 9 × 9 cell window (4.5 inches square), which ignores the ribs and the gap under the lumbar arch.
That curve is compared with the person's neutral spine, measured standing, using dynamic time warping, which pairs matching points even where one curve is stretched. The distance becomes a match score from 0 to 100: 100 means the spine stays within the repeatability of the neutral measurement; 0 means it has drifted well out of shape.
The neutral curve belongs to the person. It changes with Body, never with the bed. Drag the blue point to try every stub size in between the prototypes.
Spine on this bed vs neutral
Solid: spine on this bed. Dashed: neutral. Grey ties: DTW pairs.
Match score across stub sizes
↔ drag the pointDots: the four tested prototypes. Hollow diamond: the best uniform stub. Orange line: the generated zoned bed, which mixes stub sizes, so it sits above the curve rather than on it.
A rule for every stub
The rule starts from a base stub size, the bed's softest setting. From there each stub grows with the pressure above it, until the load limit of 45 mmHg.
Past the limit a stub cannot usefully grow any more, so the extra load is shared out: stubs around it are raised toward the limit size, over a radius that widens the further the pressure went past it.
Stub sizes are a share of the largest stub that fits a one-inch cell. The tested prototypes run from 12% (A) to 62% (D); the base for the final bed is chosen in step 07.
Stub size against local pressure
Load spreading past the limit
Bars: pressure above each stub. Solid: the size its own pressure gives. Pale halo: size added by load spreading. Ringed: over the limit.
The heat map, built in gel
Applied at every wall intersection, the rule turns the heat map into a mattress: 81 × 33 stubs at one-inch pitch, each sized for the body above it.
The grid itself never moves. Only the stubs change: smaller where the bed should give, larger where it has to hold. This body-shaped grid fits one sleeper in one position, so it is the input to the final step, not the product.
Rings mark stubs over the load limit. The pale halo around them is size added by load spreading. Hover any stub.
Generated gel grid, body-shaped
Hover a stub
The result: a zoned bed
For a bed that can be molded and does not depend on exactly where someone lies, each column across the mattress takes the 90th percentile of its 33 stub sizes. The body shape becomes head-to-foot zones.
Then the loop closes. The zoned bed is put back through the simulation, a new spine curve is extracted and scored, and the base stub is swept until the zoned bed scores best. That bed is the design.
This section always shows the generated zoned bed for the selected body. Choose Generated in the bar to see every map above on it.
Generated zoned bed
Hover a column
Spine on the zoned bed vs neutral
Solid: spine on the zoned bed. Dashed: neutral.
Validation: match score by bed
Same body, same scoring. Only the bed changes.
How the numbers are made
- Pressure map
Supine XSensor capture, 64 × 160 sensors at 0.5 in pitch. On this page each body part is lowered into the bed until the pressure under it carries its weight.
- Depth map
Each cell's pressure is converted with the prototype's pressure–displacement curve:
d = fbed(p). - Landmarks
Depth is summed across each row. Shoulders are the heaviest row in 14–36% of body length; hips the heaviest in 42–62%.
- Spine band and curve
Nine columns centered on the center of pressure, from 0.2 × the shoulder–hip span above the shoulders down to the hips. Each point is the median depth of a 9 × 9 window, then the curve is mean-centered.
- Neutral spine
The participant's standing spine profile from neck to sacrum, resampled to 60 points and mean-centered.
- Dynamic time warping
Cost
|ai − bj|; distance is the total cost of the best alignment divided by its length, in inches. - Match score
100 × (0.38 F − DTW) / (0.20 F), clamped to 0–100, where F is the distance a perfectly flat spine would score against the same neutral curve. Below 0.18 F a curve is within measurement repeatability and scores 100; at 0.38 F or more it scores 0. - Best uniform stub
21 uniform stub sizes from A to D are simulated; the best is refined with a parabola through the top three. Its pressure map feeds the stub rule.
- Stub rule
s = base + 0.35 × min(p, 45) / 80. A stub over 45 mmHg raises its neighbours withinr = 1 + (p − 45) / 12in toward the limit size, by1 − distance / r. - Zoning
For each of the 81 columns, the 90th percentile of its 33 stub sizes is applied to the whole column.
- Stub size to stiffness
The prototypes tie stub size to stiffness:
s = 12% + 50% × t, A att = 0, D att = 1. Each zone's stub size sets that column's pressure–displacement curve the same way. - Validating the zoned bed
The body is re-simulated on the zoned bed and scored with the same DTW match. The base stub is swept from A to D and refined; the best-scoring zoned bed is the result.
Representative data. The study data is proprietary to Purple Innovation, LLC and is not shown here. The bodies, maps, curves and scores on this page are generated so the method can be explored; they do not describe any real participant or product.