| 
  The latheis an object generated from rotating a two-dimensional curve about an axis. This curve is 
 defined by a set of points which are connected by linear, quadratic, cubic or bezier spline curves. The syntax is: 
LATHE:
    lathe
    {
        [SPLINE_TYPE] Number_Of_Points, <Point_1>
        <Point_2>... <Point_n>
        [LATHE_MODIFIER...]
    }
SPLINE_TYPE:
    linear_spline | quadratic_spline | cubic_spline | bezier_spline
LATHE_MODIFIER:
    sturm | OBJECT_MODIFIER
  Lathe default values:  
 
SPLINE_TYPE   : linear_spline
sturm         : off
 
  The first item is a keyword specifying the type of spline. The default if none is specified is linear_spline. 
 The required integer valueNumber_Of_Pointsspecifies how many two-dimensional points are used 
 to define the curve. The points follow and are specified by 2-D vectors. The curve is not automatically closed, i.e. 
 the first and last points are not automatically connected. You will have to do this yourself if you want a closed 
 curve. The curve thus defined is rotated about the y-axis to form the lathe object, centered at the origin. 
  The following examples creates a simple lathe object that looks like a thick cylinder, i.e. a cylinder with a thick 
 wall: 
 
 lathe {
  linear_spline
  5,
  <2, 0>, <3, 0>, <3, 5>, <2, 5>, <2, 0>
  pigment {Red}
 }
  The cylinder has an inner radius of 2 and an outer radius of 3, giving a wall width of 1. It's height is 5 and it's 
 located at the origin pointing up, i.e. the rotation axis is the y-axis. 
 
  Note: the first and last point are equal to get a closed curve. 
 
  The splines that are used by the lathe and prism objects are a little bit difficult to understand. The basic 
 concept of splines is to draw a curve through a given set of points in a determined way. The default  
 linear_splineis the simplest spline because it's nothing more than connecting consecutive points with a line. 
 This means the curve that is drawn between two points only depends on those two points. No additional information is 
 taken into account. The other splines are different in that they do take other points into account when connecting two 
 points. This creates a smooth curve and, in the case of the cubic spline, produces smoother transitions at each point. 
   The quadratic_splinekeyword creates 
 splines that are made of quadratic curves. Each of them connects two consecutive points. Since those two points (call 
 them second and third point) are not sufficient to describe a quadratic curve, the predecessor of the second point is 
 taken into account when the curve is drawn. Mathematically, the relationship (their relative locations on the 2-D 
 plane) between the first and second point determines the slope of the curve at the second point. The slope of the 
 curve at the third point is out of control. Thus quadratic splines look much smoother than linear splines but the 
 transitions at each point are generally not smooth because the slopes on both sides of the point are different. 
   The cubic_splinekeyword creates splines which 
 overcome the transition problem of quadratic splines because they also take a fourth point into account when drawing 
 the curve between the second and third point. The slope at the fourth point is under control now and allows a smooth 
 transition at each point. Thus cubic splines produce the most flexible and smooth curves. 
   The bezier_splineis an alternate kind of 
 cubic spline. Points 1 and 4 specify the end points of a segment and points 2 and 3 are control points which specify 
 the slope at the endpoints. Points 2 and 3 do not actually lie on the spline. They adjust the slope of the spline. If 
 you draw an imaginary line between point 1 and 2, it represents the slope at point 1. It is a line tangent to the 
 curve at point 1. The greater the distance between 1 and 2, the flatter the curve. With a short tangent the spline can 
 bend more. The same holds true for control point 3 and endpoint 4. If you want the spline to be smooth between 
 segments, points 3 and 4 on one segment and points 1 and 2 on the next segment must form a straight line and point 4 
 of one segment must be the same as point 1 on the next segment. 
  You should note that the number of spline segments, i. e. curves between two points, depends on the spline type 
 used. For linear splines you get n-1 segments connecting the points P[i], i=1,...,n. A quadratic spline gives you n-2 
 segments because the last point is only used for determining the slope, as explained above (thus you will need at 
 least three points to define a quadratic spline). The same holds for cubic splines where you get n-3 segments with the 
 first and last point used only for slope calculations (thus needing at least four points). The bezier spline requires 
 4 points per segment, creating n/4 segments. 
 
  If you want to get a closed quadratic and cubic spline with smooth transitions at the end points you have to make 
 sure that in the cubic case P[n-1] = P[2] (to get a closed curve), P[n] = P[3] and P[n-2] = P[1] (to smooth the 
 transition). In the quadratic case P[n-1] = P[1] (to close the curve) and P[n] = P[2]. 
 
   The sturmkeyword can be used to specify that the slower, but more 
 accurate, Sturmian root solver should be used. Use it, if the shape does not render properly. Since a quadratic 
 polynomial has to be solved for the linear spline lathe, the Sturmian root solver is not needed. |