One central issue in our movers is conversion from a distance to a point (and rotation) along a defined path. Let’s explore the space of paths and their representation.
We’ll start with random topics, including path spacing, the representation of path information, and some ways of storing a path.
Another is that we might be dealing with a path where the information about the path is inherently variable. SLRR is an example of that: the guides are spaced at various distances as the path wanders.
Variable spacing might allow for more compact storage, but random access to the path might be slow.
While the Bezier (or NURBS) calculations are somewhat complex and possibly slow, there are certainly calculated paths, such as lines, circles or ellipses, or even some more complex paths such as spirals or helices, that would be compact and efficient.
Notecard access has recently received an update that allows buffering the card, after which access is more direct. We have not experimented with this but it seems likely to be useful.
Looking at the above, I get these ideas for things we might do:
Explore performance of small objects vs array representations. We’d still use objects: they’re just named collections of data and functions. But the bottom-level ones might be very different. A dynamically discovered path may benefit from lots of tiny objects, while a statically-defined path might benefit from a very dense structure based on arrays.
Learn about performance of buffered notecards. If they’re capable enough, they could have real advantages in convenience.
Explore a few different objects that deal with different storage schemes while presenting a common interface to the base-level mover code.
Consider whether there is a faster form of calculated path than Bezier/NURBS, one that we could use. Lines are much faster than Bezier. Conic sections are probably three times faster. We parse the SLRR into Beziers for appearance sake, making our path motion smoother. Is there a way that’s nearly as good but substantially better in performance?
Just notes, things to think about. I’ll probably keep working for a while at the low level, learning about ways to represent paths and process them down at the bottom level.
Safe paths!