Redotted

ABSTRACT

The Redotted operation involves recoloring all dots in the mesh, leaving lines and triangles untouched. In particular, you can either apply a universal albedo, or apply a linear gradient.

REMARK

Linear gradients in the recoloring process don't generally look that good (in particular, they might not actually appear all that linear. I am hoping to fix this process, but be aware of these issues in the meantime).

PARAMETERS
meshRepresents the mesh-tree containing meshes with dots to be recolored. All provided meshes' dots will undergo recoloring.
rootThe root of the mesh-tree, serving as the container for mesh selection.
tag_predicate(tag)Determines whether a mesh should be included in the recoloring operation based on the provided tag.
albedoA 4-vector that represents the albedo color for the dots.
start_colorA 4-vector that represents the start color for the gradient, used when the gradient coloring is applied.
end_colorA 4-vector that represents the end color for the gradient, used when the gradient coloring is applied.
start_vecA 3-vector that represents the start position for the gradient, used when the gradient coloring is applied.
end_vecA 3-vector that epresents the end position for the gradient, used when the gradient coloring is applied.
RETURN

If the complete mesh set is provided, all meshes' dots will be individually recolored. The return value is the mesh-tree of all the recolored meshes. However, if only a subset is chosen, the returned value will comprise a mesh-tree of the recolored selected meshes, while the unselected meshes will remain unchanged. Crucially, all meshes you didn't select will still be included in the result mesh_tree, but be provided as is (i.e. no recoloring).

DECLARATION
func Redotted([mesh_tree] {[full] {mesh}, [tag_pred] {root, tag_predicate(tag)}}, [color] {[albedo] {albedo}, [gradient] {start_color, end_color, start_vec, end_vec}})