SurfaceOfRevolution
### SurfaceOfRevolution(curve, minval, maxval, [axis])
A surface evaluator object for a surface of revolution, which results by revolving a two-dimensional curve around an axis.
This class is considered a supplementary class to the Public Domain HTML 3D Library and is not considered part of that library.
Parameters
curve
(Type: Object)
A curve evaluator object that describes a 2-dimensional curve to rotate about the axis of rotation, as specified in the “axis” parameter. The curve’s X coordinates correspond to elevation, and its Y coordinates correspond to radius.
If the curve function draws a curve that goes both above and below the axis of rotation, such as a circle or ellipse, the V coordinates given in minval and maxval must restrict the curve definition to no more than half of the curve.
* minval
(Type: number)
Smallest V coordinate.
* maxval
(Type: number)
Largest V coordinate. If minval is greater than maxval, both values will be swapped.
* axis
(Type: Array.<number>) (optional)
Axis of rotation, around which the curve will be rotated to generate the surface of revolution. If null, undefined, or omitted, the positive Z axis (0, 0, 1) will be the axis of rotation. This parameter is a 3-element array describing the X, Y, and Z coordinates, respectively, of a 3D point. The axis of rotation will run in the direction from the origin to the point given in this parameter. This parameter need not be a unit vector.
Methods
- endPoints
- evaluate
Finds the coordinates of the given point of this surface. - fromFunction
Creates a surface evaluator object for a surface of revolution whose curve is the graph of a single-variable function. - torus
A surface evaluator object for a torus, a special case of a surface of revolution.
### SurfaceOfRevolution#endPoints()
### SurfaceOfRevolution#evaluate(u, v)
Finds the coordinates of the given point of this surface.
Parameters
u
(Type: number)
U coordinate of the surface to evaluate.v
(Type: number)
V coordinate of the surface to evaluate.
Return Value
An array containing the coordinates of the position at the given point. It will have three elements. (Type: Array.<number>)
### (static) SurfaceOfRevolution.fromFunction(func, minval, maxval, [axis])
Creates a surface evaluator object for a surface of revolution whose curve is the graph of a single-variable function. The resulting surface will have a circular cross section along its length. Examples of surfaces generated by this technique are cones, frustums, cylinders, spheres, and spheroids (the bases of these surfaces won’t be generated).
Parameters
func
(Type: function)
Function whose graph will be rotated about the axis of rotation, as specified in the “axis” parameter. The function takes a number as a single parameter and returns a number. The return value is effectively the radius of each part of the surface from beginning to end.minval
(Type: number)
Smallest parameter of the function. This is a number of units from the origin along the axis of rotation.maxval
(Type: number)
Largest parameter of the function. This is a number of units from the origin along the axis of rotation. If minval is greater than maxval, both values will be swapped.axis
(Type: Array.<number>) (optional)
Axis of rotation, around which the function graph will be rotated to generate the surface of revolution. If null, undefined, or omitted, the positive Z axis (0, 0, 1) will be the axis of rotation. This parameter is a 3-element array describing the X, Y, and Z coordinates, respectively, of a 3D point. The axis of rotation will run in the direction from the origin to the point given in this parameter. This parameter need not be a unit vector.
Return Value
Return value. (Type: SurfaceOfRevolution)
Example
The following creates an evaluator for a cone which starts at the origin and runs 10 units along the Z axis.
var surf=SurfaceOfRevolution.fromFunction( function(x) { "use strict"; return x/2; }, // use a constantly increasing function 0, 10);
This is an evaluator for the same cone, but shifted 3 units back.
var surf=SurfaceOfRevolution.fromFunction( function(x) { "use strict"; x+=3; return x/2; }, -3,7);
The following creates an evaluator for a cylinder which runs from 5 to 10 units, and with a radius of 2 units.
var surf=SurfaceOfRevolution.fromFunction( function(x) { "use strict"; return 2; }, // use a constant radius 5, 10);
### (static) SurfaceOfRevolution.torus(outerRadius, innerRadius, [curve], [axis])
A surface evaluator object for a torus, a special case of a surface of revolution.
Parameters
outerRadius
(Type: number)
Radius from the center to the innermost part of the torus.innerRadius
(Type: number)
Radius from the inner edge to the innermost part of the torus.curve
(Type: Object) (optional)
A curve evaluator object that describes a 2-dimensional curve to serve as the cross section of the torus. The curve need not be closed; in fact, certain special surfaces can result by leaving the ends open. If null, undefined, or omitted, uses a circular cross section with a radius of 1.axis
(Type: Array.<number>) (optional)
Axis of rotation, which the torus will pass through. If null, undefined, or omitted, the positive Z axis (0, 0, 1) will be the axis of rotation. This parameter is a 3-element array describing the X, Y, and Z coordinates, respectively, of a 3D point. The axis of rotation will run in the direction from the origin to the point given in this parameter. This parameter need not be a unit vector.
Return Value
Return value. (Type: SurfaceOfRevolution)