Primitive figure element.
This type of element is responsible for drawing something to the screen, or managing a HTML element in the DOM
an object that handles drawing to the screen or manages a HTML element
initial transform to set
color to set
parent element
Conveniently set the first translation of the element's transform.
x coordinate or full point definition
y coordinate if pointOrX is just the x coordinate (0)
Conveniently set the first rotation of the element's transform.
Conveniently set the first scale of the element's transform.
horizontal scale - either
define as full x-y point, or as a number. If scaleOrX is a number and
y is null, then both x and y will be equally scaled
y coordinate if scaleOrX is a number (null)
Set transform of element. Setting through this method will ensure
setTransfrom subscription will publish, and transform will be
appropriately clipped.
Set element color to dimColor
Set element color to defaultColor
Set transform, color and/or visibility to a predefined scenario.
Save the current transform, color and/or visibility to a scenario.
Return figure path of element
path of element relative to figure
Pulse element.
An element can be pulsed in scale, a rotation or a translation.
The scale pulse can either be a single pulse, or a number of copies with a range of scales - which has the effect of making regular polygons thick.
Either pass in a callback, or an options object defining the pulse and callback.
Transform a point between 'draw', 'local', 'figure', 'gl' and 'pixel' spaces.
plane is only needed when converting from pixel space (a 2D space) to
'figure', 'local' or 'draw' spaces (a 3D space). A ray from the pixel is
drawn into the screen
and the intersection with the defined plane is returned.
'pixel' to 'gl' is also a 2D to 3D transformation, but in this case the XY plane at z = 0 is used in gl space.
space to convert point from
space to convert point to
Return a matrix that can transform from one coordinate space to another.
Get the border or touchBorder of a FigureElementPrimitive in a defined coordinate space.
('local)
('border')
Return the first scale in the element's transform. Will return
[1, 1] if element's transform doesn't have a scale.
scale
Return the first rotation in the element's transform.
how to normalize the
returned angle where '' returns the raw angle
scale
Get position of element
By default the first translation of the element's transform is returned. This is effectively the element's location in 'local' coordinates.
The position of the element relative to its horizontal and vertical bounds
can also be returned. Use xAlign to find the x coordinate of the left,
center, right or percentage width from left of the element. Use yAlign
to find the bottom, middle, top or percentage height from bottom of the
element.
the space to return the position in
horizontal alignment of position. Use a number to define the horizontal
position in percentage width from the left.
vertical alignment of position. Use a number to define the vertical
position in percentage height from the bottom.
Set the element's position in local space such that it lines up with a figure space target.
Align element position in local space such that it is in the same position as the target element (even if that element is in a different local space)
true set this element as touchable and configures all parent elements
to accept touches for their children
false makes this element not touchable.
Configure all parents to make this element touchable, and make this element touchable and movable
true to make movable, false to not
Toggle hide/show of element
Get current transform of element.
true if element is moving
true if element is animating
Set angle to draw.
Some primitive elements can be partially drawn to some angle.
An angle of -1 represents the maximum angle allowed by the primitive.
Angle to draw
Set element color.
RGBA color from 0 to 1
also set the default color to this color
Show element.
Hide element
Set points position to be between two points arrays
name or index of point array to morph from
name or index of point array to morph to
percent of morph between from and to
Set points to equal a point array
point array name or index to set
FigureElementPrimitive that can efficiently translate large numbers of points.
The morph primitive is optimized to animate hundreds of thousands of points with minimal performance impact.
Multiple arrays of points can be defined, and the translation of corresponding points in two arrays can be animated.
Being able to accomodate so many points means this primitive can be used to efficiently morph shapes.
All points in all point arrays can be assigned an individual color if desired. Use
color: TypeColorto assign all points in all arrays the same color,color: Array<TypeColor>to assign all points in each array a specific color,color: Array<Array<TypeColor>>to assign each point in each array a specific color, andcolor: Array<TypeColor | Array<TypeColor>to assign some point arrays with one color, and others with a specific color per point.A point array is an array of numbers representing consecutive x, y points. For example, [x1, y1, x2, y2, ...].
A color array is an array of numbers representing the color of each points. For example, [r1, g1, b1, a1, r2, g2, b2, a2, ...].
If
coloris an array of colors and/or color arrays, then the its length must be equal to the number of point Arrays. The colors in the array will be matched up with the corresponding point arrays inpoints.This element's specialty is creating a visual effect, and so does not automatically calculate touch borders, and doesn't allow for color changes (with the
setColor,dim, andundimmethods). If touch borders are desired then either setup touch borders manually, or use a different element as a touch pad.This element comes with two specialized methods and an animation step:
setPoints- sets points to a specific point arraysetPointsBetween- sets points to a position between two point arraysanimations.morph- morph betweenstartandtargetNote, while animation is efficient, loading or generating hundreds of thousands of points when first instantiated can be slow on lower end systems, and may need to be accounted for (like letting the user know that loading is ongoing).
Example
Example