# Introduction#

Sage has a wide support for 3D graphics, from basic shapes to implicit and parametric plots.

The following graphics functions are supported:

`plot3d()`

– plot a 3d function`parametric_plot3d()`

– a parametric three-dimensional space curve or surface`revolution_plot3d()`

– a plot of a revolved curve`plot_vector_field3d()`

– a plot of a 3d vector field`implicit_plot3d()`

– a plot of an isosurface of a function`list_plot3d()`

- a 3-dimensional plot of a surface defined by a list of points in 3-dimensional space`list_plot3d_matrix()`

– a 3-dimensional plot of a surface defined by a matrix defining points in 3-dimensional space`list_plot3d_array_of_arrays()`

- A 3-dimensional plot of a surface defined by a list of lists defining points in 3-dimensional space`list_plot3d_tuples()`

– a 3-dimensional plot of a surface defined by a list of points in 3-dimensional space

The following classes for basic shapes are supported:

`Box`

– a box given its three magnitudes`Cone`

– a cone, with base in the xy-plane pointing up the z-axis`Cylinder`

– a cylinder, with base in the xy-plane pointing up the z-axis`Line`

– a 3d line joining a sequence of points`Sphere`

– a sphere centered at the origin`Text`

– a text label attached to a point in 3d space`Torus`

– a 3d torus`Point`

– a position in 3d, represented by a sphere of fixed size

The following plotting functions for basic shapes are supported

`ColorCube()`

– a cube with given size and sides with given colors`LineSegment()`

– a line segment, which is drawn as a cylinder from start to end with given radius`line3d()`

– a 3d line joining a sequence of points`arrow3d()`

– a 3d arrow`point3d()`

– a point or list of points in 3d space`bezier3d()`

– a 3d bezier path`frame3d()`

– a frame in 3d`frame_labels()`

– labels for a given frame in 3d`polygon3d()`

– draw a polygon in 3d`polygons3d()`

– draw the union of several polygons in 3d`ruler()`

– draw a ruler in 3d, with major and minor ticks`ruler_frame()`

– draw a frame made of 3d rulers, with major and minor ticks`sphere()`

– plot of a sphere given center and radius`text3d()`

– 3d text

Sage also supports platonic solids with the following functions:

Different viewers are supported: a web-based interactive viewer using the
Three.js JavaScript library (the default), Jmol, and the Tachyon ray tracer.
The viewer is invoked by adding the keyword argument
`viewer='threejs'`

(respectively `'jmol'`

or `'tachyon'`

)
to the command `show()`

on any three-dimensional graphic.

`Tachyon`

– create a scene the can be rendered using the Tachyon ray tracer`Axis_aligned_box`

– box with axis-aligned edges with the given min and max coordinates`Cylinder`

– an infinite cylinder`FCylinder`

– a finite cylinder`FractalLandscape`

- axis-aligned fractal landscape`Light`

– represents lighting objects`ParametricPlot`

– parametric plot routines`Plane`

– an infinite plane`Ring`

– an annulus of zero thickness`Sphere`

- a sphere`TachyonSmoothTriangle`

– a triangle along with a normal vector, which is used for smoothing`TachyonTriangle`

– basic triangle class`TachyonTriangleFactory`

– class to produce triangles of various rendering types`Texfunc`

– creates a texture function`Texture`

– stores texture information`tostr()`

– converts vector information to a space-separated string