Oh, I’m far from an expert; everything I know I’ve learned from nanovg.h, stoermelder’s MAZE, Rack’s LightWidgets, and some trial/error. I’ve actually never done any graphics coding before Rack and NanoVG.
I haven’t done any experimenting with stroke width to see how it plays with nvg at different zoom levels. In Algomorph all the numbers that I’m feeding into nvg come from the SVG output of GraphViz, so I haven’t had to bother with coming up with numbers for myself.
Actually, the functional foundation of Algomorph’s display is sticking
rack::math::crossfade() inside the parameters for just about every call to nvg. So for example something like:
nvgCircle(ctx, crossfade(nodeX, nodeX, morph), crossfade(nodeY, nodeY, morph), radius);
So, given that I’m successfully throwing all sorts of crazy floating point numbers in there like that, my guess is that it’s not worth worrying about.