Right now the thickness of a branch is varied per segment by setting the stroke thickness of the line that gets drawn. This has a side effect of causing the segments not to join up perfectly since each segment is a discrete line with its own thickness. This problem is especially visible when there are sharp angles between segments.
Look into implementing branch thickness in a continuous way, maybe using ribbons or isolines.
Right now for closed venation, any sources that are not influencing any nodes are immediately removed. This causes vein clusters to be pretty small and not grow indefinitely.
Try adding a "fresh" flag when the sketch starts, then set to false when it begins influencing nodes so it only disappears after its influenced some.
See Defaults.js for a list of global parameters that can be changed within sketches for different effects.
Feature wishlist
Toggle type of venation - open or closed.
VenationType = values are either 'Open' or 'Closed'
Draw simple primitive shapes and set them as either "bounds" or "obstacle" shapes
A simple MS Paint kind of interface would be just fine
These shapes would be Path objects assigned to the Network through the internal arrays network.bounds and network.obstacles
Auxin sources should only be allowed to spawn inside of bounds, and outside of obstacles. Sources may need to be reset when a bounds or obstacle is added or changed.
Allow freehand drawing of bounds or obstacle shapes
Click and hold to draw shape
All paths must be closed, so maybe automatically connect the last point to the first point on mouse up
Allow users to paint auxin sources with their mouse (these are what the veins grow towards)
Toggle auxin flux canalization (vein thickening) (see EnableCanalization)
Toggle opacity blending (see EnableOpacityBlending)
Click to add root vein nodes
BONUS: integrate a color picker so veins can be colored differently
Buttons to start, stop, or reset the simulation (see IsPaused and the resetNetwork() method in any sketch)
Custom colors for background, veins, bounds, and obstacles
See Colors variable, which references objects stored in ColorPresets.js
Buttons to toggle visibility of veins, bounds, obstacles, and other effects (see Defaults.js)
Rendering style - either 'Lines' or 'Dots' (see VeinRenderMode)
Advanced features
Attraction zone radius
See AttractionDistance
Smaller values can improve performance, but will also make things look slightly different.
Kill zone radius
See KillDistance
Higher values tend to improve performance but creates visible gaps in the "closed" venation style.
Vein thickness
See VeinThickness
SVG export would be cool, but the current export process doesn't cope well with large vein networks, which happen a lot. If it can be improved, this would be a good feature to expose in the UI.
Right now multiple veins that are converging on a single source do not actually connected together once they enter the source's kill zone. With a sufficiently small kill zone the veins can appear to be joined, but actually aren't.
My intuition is that once veins enter the kill zone of a source, they are more or less pointed straight at the center of the source. So maybe the veins can be extended with a straight line segment to reach the source's center.