 "sor" = surface of revolution

"sor" = surface of revolution
general syntax:
sor{ n,
< x_{1, }y_{1} >,
< x_{2, }y_{2} >,
< x_{3, }y_{3} >,
...
< x_{n, }y_{n} >
texture{ ... }
} 

Here "n" points < x_{i, }y_{i} >( i = 1 to n )
are used to define a outline of a body in the xyplane.
These points are conected by a spline curve. The body appears by a rotation of this line arround the yaxis.
By default this curve will be closed ortogonally to the yaxis, if we want to get an open body we have to add the statement
"open". Sometimes errors occure by the limited caculating accuracy, shown by holes in the surface of revolution.
By adding the statement "sturm" it is sometimes possibe to reduce them (this forces POVRay to
use the slower but more accurate algorithm of Sturm when calculating square roots).

To get another position and/or orientation of the surface of revolution you have to use
"rotate< , , >" and "translate< , , >" .


Sample left:
// sor
// at zero (closed, cut off a box):
sor{ 8, // n = 8 points!
< 0.00, 0.00>,
< 0.60, 0.00>,
< 0.72, 0.44>,
< 0.31, 0.93>,
< 0.49, 1.26>,
< 0.48, 1.35>,
< 0.43, 1.56>,
< 0.16, 1.60>
texture{
pigment{color White}
finish { phong 0.5}}
}// end of sor
// 

Sample right:
// sor
// right (open):
sor{ 8, // n = 8 points!
< 0.00, 0.00>,
< 0.60, 0.00>,
< 0.72, 0.44>,
< 0.31, 0.93>,
< 0.49, 1.26>,
< 0.48, 1.35>,
< 0.43, 1.56>,
< 0.16, 1.60>
open // <!!!
translate<2,0,0>
texture{
pigment{color White}
finish {phong 0.5}}
}// end of sor
// 

Hint:
Why "sor" instead of "lathe" ?(the last one seems most times to be more flexible!)
By calculating intersections with "sor"objects quadratic equations are necessary,
by intersection tests with "lathe"objects you need to calculate with equations of the 6th order.
Quadratic equations are much faster and accurate to solve! Because of such objects have many parts of surfaces
this is very important!

