Morph class

This class is used to animate between start and end polygons objects.

Morphing between arbitrary objects can be problematic because it can be difficult to determine how the points of a given shape map to the points of some other shape. Morph simplifies the problem by only operating on RoundedPolygon objects, which are known to have similar, contiguous structures. For one thing, the shape of a polygon is contiguous from start to end (compared to an arbitrary Path object, which could have one or more moveTo operations in the shape). Also, all edges of a polygon shape are represented by Cubic objects, thus the start and end shapes use similar operations. Two Polygon shapes then only differ in the quantity and placement of their curves. The morph works by determining how to map the curves of the two shapes together (based on proximity and other information, such as distance to polygon vertices and concavity), and splitting curves when the shapes do not have the same number of curves or when the curve placement within the shapes is very different.

Available extensions

Constructors

Morph(RoundedPolygon start, RoundedPolygon end)

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

asCubics(double progress) List<Cubic>
Returns a representation of the morph object at a given progress value as a list of Cubics. Note that this function causes a new list to be created and populated, so there is some overhead.
calculateBounds({List<double>? bounds, bool approximate = true}) List<double>
Calculates the axis-aligned bounds of the object.
calculateMaxBounds([List<double>? bounds]) List<double>
Like calculateBounds, this function calculates the axis-aligned bounds of the object and returns that rectangle. But this function determines the max dimension of the shape (by calculating the distance from its center to the start and midpoint of each curve) and returns a square which can be used to hold the object in any rotation. This function can be used, for example, to calculate the max size of a UI element meant to hold this shape in any rotation.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toPath({required double progress, int startAngle = 0, bool repeatPath = false, bool closePath = true, double rotationPivotX = 0, double rotationPivotY = 0, Path? path}) Path

Available on Morph, provided by the MorphToPathExtension extension

Returns a Path for a Morph.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited