Armcadia is a single-header, C library for generating and animating 2D tentacles using waves and primitives.
Right now it's still in development, and I'm in the process of making it more platform-agnostic, although it's should be a drop-in for Raylib users. It has support for custom drawing routines via callbacks, and a slew of parameters for customizing the look and feel of each tentacle, how it animates, and simple actions such as latching the tip to a given set of coordinates.
Tentacles are defined with a starting coordinate, base angle of projection, and then the stalk grows outward based off the other parameters, such as defined curling and waving envelopes, and a pair of waves can be configured to set up fairly sophisticated looking idling animations, which are easy to adjust on the fly. You can lock the tip to a separate set of coordinates, and the tentacle will reach for it, and latch on if it's in range.
This library is being used in my most recent demo, and will be made publicly available soon.
Testing has gone well so far. Performance is definitely an issue if you're using the default rendering routines, which just have Raylib draw a bunch of filled circles. Apparently that's dog-slow. You're better off providing your own routines that drop in textures instead (this can literally be a routine with one line of code in it, lol).
I've spent the last few weeks dogfooding the lib, using it to construct and animate several scenes in a demo. I made several minor improvements in response to my experience, but otherwise left things as they are. Again, the default Raylib primitive drawing routines are underwhelming, but it's borderline trivial to put in some textures of your own and set up custom drawing routines. I'll include full example programs showing exactly how to make that happen.
Still dogfooding this. I can see some points where I can streamline the lib, calculations, etc. I'd also like (read: need) to make a few example programs showing how the do common things, and avoid pitfalls. I remain pleased with the results; doubly so as this is the second lib I've ever created (the first was an unreleased mouse gesture detection library for Allegro 4).