Reference:Torus
A torus
is a 4th order quartic polynomial shape that looks like a donut or inner tube. Because this shape is so useful and quartics are difficult to define, POV-Ray lets you take a short-cut and define a torus by:
TORUS: torus { Major, Minor [SPINDLE_MODE] [TORUS_MODIFIER...] } TORUS_MODIFIER: sturm | OBJECT_MODIFIER SPINDLE_MODE: difference | intersection | merge | union
Torus default values:
union sturm : off
where Major
is a float value giving the major radius and Minor
is a float specifying the minor radius. The major radius extends from the center of the hole to the mid-line of the rim while the minor radius is the radius of the cross-section of the rim. The torus is centered at the origin and lies in the x-z-plane with the y-axis
sticking through the hole.
The torus is internally bounded by two cylinders and two rings forming a thick cylinder. With this bounding cylinder the performance of the torus intersection test is vastly increased. The test for a valid torus intersection, i.e. solving a 4th order polynomial, is only performed if the bounding cylinder is hit. Thus a lot of slow root solving calculations are avoided.
New in version 3.7.1 is a torus with a minor radius greater than the major radius (aka spindle torus) will self-intersect in a spindle-shaped region. The behavior with respect to the spindle can be controlled by specifying either of the difference
,intersection
, merge
or union
keywords, which act similar to the corresponding CSG operations:
- Using the
difference
keyword, the self-intersecting portion is cut away from the torus, so that the spindle volume is considered outside the primitive; the spindle surface is visible (provided you cut open the torus, or make it semi-transparent). - Using the
intersection
keyword, the resulting shape consists of only the self-intersecting portion, so that only the spindle volume is considered inside the primitive, and only the spindle surface is visible. - Using the
merge
keyword, the surface within the self-intersecting portion is hidden, so that the spindle surface is not visible; the spindle volume is considered inside the primitive. - Using the
union
keyword, the entire torus surface remains visible and the spindle volume is considered inside the primitive (this is the default).
In a non-spindle torus, the intersection
keyword will cause a "possible parse error" warning and make the torus invisible, while the other spindle mode keywords will have no effect whatsoever.
Note: The difference
spindle mode does not affect the behavior with respect to the
interior_texture
keyword. An interior_texture
will always be applied to the side of the spindle surface facing the spindle volume.
If additional accuracy is required you can add the sturm
object modifier.