Design for a Rocking Chair

Make your own chair, that reflects your style.

What I present here today, is a rocking chair whose look and feel you can customize by altering certain parameters, which the user provides. Digitally fabricated, it can be mass-produced and mass-customized.

It started with the design for a cozy rocking chair. I sought to keep it simple and easy to assemble. I imagined it would be used in a weekend vacation home, where you don’t mind falling asleep. A comfortable and strong support at the lower-back and knee areas was essential.

Rocking chairs always reminded me of grandparents. It is one thing they don’t need to struggle for. It’s theirs for the taking.

I figured an old person, or an injured person, would never use the chair. It was just not convenient for them. The chairs they often use are upright and easy to engage or disengage from. Even people who don’t really have time for a rocking chair in their lives, consider it a sacrilegious waste. The only time they would use a rocking chair, would be to grab a newspaper for a short look or some thinking time. Your natural posture needs to be upright for that. That gave me a slightly upright chair, with the centre of gravity slightly forward, to ensure you are propped forwards.

I imagined people could get a chance to balance the design for their chair as per their taste. They could make it a perfect balance of both, or slightly upright or slightly relaxed as they would like. Certain other aspects, like height and weight, which are vital in any design, had to be incorporated into the design as well.

The user would have to provide his age, which could tell us about his height, and help us adjust the proportions of the backrest, the seat and the leg-rest along with inclinations. Weight would be used to reach an estimate if more or less seating width would be required.

The three parameters would determine the final design of the chair. The design would morph between the two extremes, as shown, for the following parameters, in the most relaxed posture.

A computer script executed in Rhinoceros 3D modelling and Grasshopper would help with the process. The basic purpose for the script, would be to alter the dimensions of the chairs, in a controlled manner, reflective of certain parameters. The parameters themselves would be held within a range, which relates and corresponds to the human body dimensions. The base parameters had to such that it would be simple for lay person to understand. It was also important to not bombard the user with dials and toggles, rather give it simple and easy to use.

First I had to determine what parameters I chose to ask the user. I thought 3 was the upper limit, cause that’s the number of questions I would bear to answer, with my patience. And they ought to be known by me, instinctive to me. They aren't preparing for any exam. Age is something about you, that you would be aware of. Next would be your weight, which you could even check right away. And last is your choice whether you want it upright or relaxed. The extents of range of the answers, were restricted to reasonable limitations.

The method and material we are using for the production, has to be digitally fabricated, and easily available to suit the entire production process. The method uses a flat MDF(Medium Density Fibre), which are pre-laminated. It has all the said qualities. We use a CNC router cutter which uses vector files, which could be generated by a computer program.

Green lines shows the base form of the chair in upright position extreme and the pink line shows its relaxed position extreme.

The design starts by assigning parametric definitions to the initial sketch of the design. The best part is that I can alter the base forms of the design, without altering all of the script for the final design.

The 2 similar-looking components in this part represent the two extremes of the design.

After generating the rough profiles I impart a rounded fillet to the original profile, which would affect the final design in an important way. This part makes the design look more approachable. I believe the design would have been far less appealing without this.

I am also providing an inner offset cut-out in hopes of better material optimization. It also provided a lightness in the design. In process of making it, I realized it was also important how the vertical line of the curve which is close to the backrest, would determine the structural stability and also its looks.

Then the script generates the future position of the slotted braces, which are suitably spread-out along the sides. The size and scale of the slotting profiles are also generated and align it properly at the required positions.

After developing the side profile for one side, next step is to make a copy of it by a certain distance, to develop the other half of the chair vertical support. I set a certain minimum distance, and then the gap between the 2 sides, would increase or decrease based on the weight of the user, given by the ‘Weight’ parameter.

An important process here is the gap is not directly reflective of the age. On looking at people of different heights and weights, it is observable that the width of the human body would increase by a greater extent depending on how much more over-weight he is from the normal. In short, people who weight between 60-85 kg would require a similar seat width, but people who weigh a 100 kg would require a considerably more seat width, and a 120 kg person even more. The seat width is associated to the equation of the relation between the ideal requirement of human age and the respective required width. It was effective in the required range and I offset the graph by a certain value, to suit the required use. So my seat-width now increased in greater values for grater values of weight, within the range.

Then the profile curves of the brace members are generated as a completely geometric function of a single point, to maintain the script as little ‘absolute’ and as much ‘relative’ as possible. I had known I would require 2 different types of profile curves — one to act as the seating surface and one to provide a cross-brace at the ground level. In addition I observed that the human body was cylindrical in shape. So I tweaked the seating curves be more sunken when the weight of the person is more. When the weight is lesser it would be a flatter curve without the person feeling as if he were in a pit.

Another bit of script will ensure that a make a copy of as many number of brace curves as would be required for the specified parameters. These curves which I collect on side would be used as the cutting profiles as the final output for fabrication. The curves are properly set apart with sufficient buffer between 2 curves to permit CNC cutting.

Simultaneously, the script also generates a 3D model, which would reflect any changes to the parameters in real-time and help in visualizing the final design.

This is another interesting part of the script. I calculate the area that would be used for fabricating the final design, by analysing the profiles collected on the side in a flat surface, in various stages previously. The measurements are calculated in square feet and adding the text-tags for the same, positioned next to the profiles at the side.

The design scales up or down based on the age input. However, the size of a person increases more rapidly at a younger age, and then evens out. To ensure this is reflected I tried relating the factor of the scale function, to function of the relation between ideal human body age to size relation; held with the limitations of maximum and minimum age.

All done. The script now generates a fully customizable design, the final CNC cutting profile for it, a responsive 3D model of the design and the required area of material in square feet .

There was a slight glitch in between, but I manually edited the curves to make sure I get the final model right. I took the 2 extreme design limits and proceeded to get it CNC cut.


We managed to fabricate the extreme two design options.

Relaxed(left) - Upright(right)
Relaxed(left) — Upright(right)
Relaxed(left) — Upright(right)


Script by Amit Nambiar for O-lap

Graphics by Akshay Kore and Amit Nambiar for O-lap

Article by Amit Nambiar for O-lap

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit