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 specified 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 specified 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 specified 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)