Higher order polynomial surfaces may be defined by the use of a poly shape. The syntax is: poly { ORDER, } where ORDER is a whole number from 2 to 7 inclusively that specifies the order of the equation. T1, T2... Tm are float values for the coefficients of the equation. There are 'm' such terms where: m = ((ORDER+1) * (ORDER+2) * (ORDER+3)) / 6 An alternate way to specify 3rd order polygons is: cubic { } Also 4th order equations may be specified with: quartic { } Here's a more mathematical description of quartics for those who are in- terested. Quartic surfaces are 4th order surfaces, and can be used to des- cribe a large class of shapes including the torus, the lemniscate, etc. The general equation for a quartic equation in three variables is (hold onto your hat): a00 x^4 + a01 x^3 y + a02 x^3 z + a03 x^3 + a04 x^2 y^2 + a05 x^2 y z + a06 x^2 y + a07 x^2 z^2 + a08 x^2 z + a09 x^2 + a10 x y^3 + a11 x y^2 z + a12 x y^2 + a13 x y z^2 + a14 x y z + a15 x y + a16 x z^3 + a17 x z^2 + a18 x z + a19 x + a20 y^4 + a21 y^3 z + a22 y^3 + a23 y^2 z^2 + a24 y^2 z + a25 y^2 + a26 y z^3 + a27 y z^2 + a28 y z + a29 y + a30 z^4 + a31 z^3 + a32 z^2 + a33 z + a34 To declare a quartic surface requires that each of the coefficients (a0 -> a34) be placed in order into a single long vector of 35 terms. As an example let's define a torus the hard way. A Torus can be repre- sented by the equation: x^4 + y^4 + z^4 + 2 x^2 y^2 + 2 x^2 z^2 + 2 y^2 z^2 -2 (r0^2 + r1^2) x^2 + 2 (r0^2 - r1^2) y^2 -2 (r0^2 + r1^2) z^2 + (r0^2 - r1^2)^2 = 0 where r0 is the 'major' radius of the torus - the distance from the hole of the donut to the middle of the ring of the donut, and r1 is the 'minor' ra- dius of the torus; the distance from the middle of the ring of the donut to the outer surface. The following object declaration is for a torus having major radius 6.3 minor radius 3.5 (making the maximum width just under 10): //Torus having major radius sqrt(40), minor radius sqrt(12) quartic { <1, 0, 0, 0, 2, 0, 0, 2, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 56, 0, 0, 0, 0, 1, 0, -104, 0, 784> sturm bounded_by { // bounded_by speeds up the render, see bounded_by // explanation later in docs for more info. sphere { <0, 0, 0>, 10 } } } Poly, cubic and quartics are just like quadrics in that you don't have to understand what one is to use one. The file SHAPESQ.INC has plenty of pre- defined quartics for you to play with. The most common one is the torus or donut. The syntax for using a pre-defined quartic is: object { Quartic_Name } As with the other shapes, these shapes can be translated, rotated, and scaled. Because they are infinite they do not respond to automatic boun- ding. They can be used freely in CSG because they have a clear defined 'inside'. Polygons use highly complex computations and will not always render per- fectly. If the surface is not smooth, has dropouts, or extra random pixels, try using the optional keyword 'sturm' in the definition. This will cause a slower, but more accurate calculation method to be used. Usually, but not always, this will solve the problem. If sturm doesn't work, try rotating, or translating the shape by some small amount. See the sub-directory MATH for examples of polys in scenes. There are really so many different quartic shapes, we can't even begin to list or describe them all. If you are interested and mathematically incli- ned, an excellent reference book for curves and surfaces where you'll find more quartic shape formulas is: 'The CRC Handbook of Mathematical Curves and Surfaces' David von Seggern, CRC Press, 1990