# How do I rotate a mesh object's vertices along an axis with a degree of rotation that increases along a linear gradient?

I want to rotate one end of the mesh object (the vertex a with the object's smallest x-coordinate value) 0 degrees around the x-axis, and the other end of the object (the vertex b with the largest x-coordinate) r degrees.

Any other vertex v of this object inbetween the aforementioned two should automatically be rotated around the x-axis by an angle of:

r * (x_v - x_a) / (x_b - x_a)

In other words, the extent of the rotation should be proportional to the position of the vertex on the axis of rotation. What's the most straightforward way to accomplish this?

• How precise does this need to be? Are you looking for a way to do this using the UI? Or with python? – gandalf3 Sep 6 '15 at 6:42
• @gandalf3 No exact requirements for precision, but the straightforwardness/precision trade-off should be "decent" -- make of that what you want... If this is best achieved with a Python script, then that's perfectly acceptable to me. – Will Sep 6 '15 at 6:58
• Maybe you can use proportional editing, but if that's too imprecise perhaps the Simple Deform modifier set to Twist can work. – gandalf3 Sep 6 '15 at 7:13
• @gandalf3 Proportial editing did the job! (Selected an edge on one end, increased sphere of influence to encompass the entire object, and set the falloff type to linear.) If your comment was answer I'd accept it. Either way, thanks! – Will Sep 6 '15 at 9:15

## 1 Answer

If you'll accept speed and on-the-fly adjustability in exchange for some precision, then perhaps proportional editing is what you are looking for: 