Computational validation · Ergonomics data to product

Designing a mattress from the spine out

A validation loop that turns pressure maps of real sleepers into a zoned gel-grid bed. It measures the body, predicts how each prototype gives, checks the spine against that person's neutral shape, sizes every stub from the heat map, then zones and re-tests the bed until it holds the spine best.

About the data. The study data is proprietary to Purple Innovation, LLC. Every map, curve and score on this page comes from representative data generated by a body model; the steps mirror the method used in the study.

Generated zoned bed · Average bodyDot size = stub size · color = pressure on the finished bed
  1. 01Measure the body
  2. 02Model the material
  3. 03Simulate the sink
  4. 04Validate the spine
  5. 05Size every stub
  6. 06Shape the firmness
  7. 07Zone and validate the bed
Body
Mattress
Base stub
B
0/ 100 match
01 · Measure the body

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

02 · Model the material

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.

03 · Simulate the sink

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

04 · Validate the spine

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 point

Dots: 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.

05 · Size every stub

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.

06 · Shape the firmness

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

07 · Zone and validate the bed

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.

Method

How the numbers are made

  1. 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.

  2. Depth map

    Each cell's pressure is converted with the prototype's pressure–displacement curve: d = fbed(p).

  3. Landmarks

    Depth is summed across each row. Shoulders are the heaviest row in 14–36% of body length; hips the heaviest in 42–62%.

  4. 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.

  5. Neutral spine

    The participant's standing spine profile from neck to sacrum, resampled to 60 points and mean-centered.

  6. Dynamic time warping

    Cost |ai − bj|; distance is the total cost of the best alignment divided by its length, in inches.

  7. 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.

  8. 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.

  9. Stub rule

    s = base + 0.35 × min(p, 45) / 80. A stub over 45 mmHg raises its neighbours within r = 1 + (p − 45) / 12 in toward the limit size, by 1 − distance / r.

  10. Zoning

    For each of the 81 columns, the 90th percentile of its 33 stub sizes is applied to the whole column.

  11. Stub size to stiffness

    The prototypes tie stub size to stiffness: s = 12% + 50% × t, A at t = 0, D at t = 1. Each zone's stub size sets that column's pressure–displacement curve the same way.

  12. 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.