Feature.Factory



Summary

Public functions

Feature

Group a list of Cubic objects to a concave corner (inward indentation in a shape).

Cmn
Feature

Group a list of Cubic objects to a convex corner (outward indentation in a shape).

Cmn
Feature
buildEdge(cubic: Cubic)

Group a Cubic object to an edge (neither inward or outward identification in a shape).

Cmn
Feature

Group a list of Cubic objects to a feature that should be ignored in the default Morph mapping.

Cmn

Public functions

buildConcaveCorner

fun buildConcaveCorner(cubics: List<Cubic>): Feature

Group a list of Cubic objects to a concave corner (inward indentation in a shape).

Parameters
cubics: List<Cubic>

The list of raw cubics describing the corner's shape

Throws
kotlin.IllegalArgumentException

for lists of empty cubics or non-continuous cubics

buildConvexCorner

fun buildConvexCorner(cubics: List<Cubic>): Feature

Group a list of Cubic objects to a convex corner (outward indentation in a shape).

Parameters
cubics: List<Cubic>

The list of raw cubics describing the corner's shape

Throws
kotlin.IllegalArgumentException

for lists of empty cubics or non-continuous cubics

buildEdge

fun buildEdge(cubic: Cubic): Feature

Group a Cubic object to an edge (neither inward or outward identification in a shape).

Parameters
cubic: Cubic

The raw cubic describing the edge's shape

Throws
kotlin.IllegalArgumentException

for lists of empty cubics or non-continuous cubics

buildIgnorableFeature

fun buildIgnorableFeature(cubics: List<Cubic>): Feature

Group a list of Cubic objects to a feature that should be ignored in the default Morph mapping. The feature can have any indentation.

Sometimes, it's helpful to ignore certain features when morphing shapes. This is because only the features you mark as important will be smoothly transitioned between the start and end shapes. Additionally, the default morph algorithm will try to match convex corners to convex corners and concave to concave. Marking features as ignorable will influence this matching. For example, given a 12-pointed star, marking all concave corners as ignorable will create a Morph that only considers the outer corners of the star. As a result, depending on the morphed to shape, the animation may have fewer intersections and rotations. Another example for the other way around is a Morph between a pointed up triangle to a square. Marking the square's top edge as a convex corner matches it to the triangle's upper corner. Instead of moving triangle's upper corner to one of rectangle's corners, the animation now splits the triangle to match squares' outer corners.

Parameters
cubics: List<Cubic>

The list of raw cubics describing the feature's shape

Throws
kotlin.IllegalArgumentException

for lists of empty cubics or non-continuous cubics