# 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