Many RGL shapes contain lists of vertices with various attributes (available via rgl.attrib). This function modifies the data for those attributes in a WebGL scene.

ageSetter(births, ages, 
         colors = NULL, alpha = NULL, radii = NULL, 
         vertices = NULL, normals = NULL, origins = NULL, 
         texcoords = NULL, 
         objids, prefixes = "", digits = 7, 
         param = seq(floor(min(births)), ceiling(max(births))))

Arguments

births

Numeric vector with one value per vertex, used to determine the “age” of the vertex when displaying it.

ages

A non-decreasing sequence of “ages”.

colors, alpha, radii, vertices, normals, origins, texcoords

Attributes of the vertices. Non-NULL attributes will be interpolated from these values. See the Details section below.

objids, prefixes

The object ids and scene prefixes to modify. These are recycled to the same length.

digits

How many digits to output in the generated Javascript code.

param

Default values to be used by a slider control calling the generated function.

Details

The vertex attributes are specified as follows:

colors

A vector of colors in a format suitable for input to col2rgb

alpha

A numeric vector of alpha values between 0 and 1.

radii

A numeric vector of sphere radii.

vertices

A 3-column matrix of vertex coordinates.

normals

A 3-column matrix of vertex normals.

origins

A 2-column matrix of origins for text or sprites.

texcoords

A 2-column matrix of texture coordinates.

All attributes must have the same number of entries (rows for the matrices) as the ages vector. The births vector must have the same number of entries as the number of vertices in the object.

Not all objects contain all attributes listed here; if one is chosen that is not a property of the corresponding object, a Javascript alert() will be generated.

Value

A character vector of class c("ageSetter", "propertySetter")

containing Javascript code defining a function suitable for use in a propertySlider.

The function takes a single argument, time, and uses it to compute the “age” of vertex i as time - births[i]. Those are then used with the ages

argument to linearly interpolate settings of the specified attributes. Extrapolation is constant. Repeated values in ages can be used to obtain discontinuities in the settings.

Author

Duncan Murdoch

See also

propertySlider; more detailed control is available in vertexSetter.