h9-honeycombs
v0.2.0
Published
a library for drawing things in the browser
Maintainers
Readme
honeycombs (h9)
current status
This is still very experimental!
I am building and keeping examples updated, looking for common patterns and adding easier ways to write them. This means almost every time I work on this project, the API changes.
Once I'm happy with the API I will revisit the major interfaces to ensure consistency, but until then, things are a mess: (x, y) here, Point there, etc.!
Key Ideas
Layouts
Division
- centroid() -> Point
- lerp() -> Point
- nudge() -> Same
- Line -> Point: lerp
- Line -> Sel[Point]: sample, randomSample
- Line -> Line: scale?
- Box -> Box: scale
- Box -> Line: line
- Box -> Point: point
- Box -> Sel[Point]: corners
- Polygon -> Polygon: scale
- Polygon -> Point: point?
- Polygon -> Sel[Point]: points
- Polygon -> Line: line?
- Polygon -> Sel[Line]: lines?
- Circle -> Circle: scale
- Circle -> Ellipse: scale
- Circle -> Point: radianPoint
- Circle -> Sel[Point]: sample, randomSample
- Circle -> Arc: radianArc
- Arc -> Arc: scale
- Arc -> Point: centroid?
- Arc -> Circle: ?
Selection
Pens
Animation
Other
- document debug pen
TODO
bounds - easy
- Line.fromPoints, Box.fromPoints, Circle.fromPoints, Polygon.fromPoints all take (Selection|Array)
- Circle.outer(Rect), Rect.outer(Circle), Circle.inner(Square), Square.inner(Circle)
splits - easy
- Line.split(0.2, 0.3, 0.4) -> Sel[Line]
- Box.split(xt, yt) -> Sel[Box]
- Ellipse,Circle.split(t1, t2) -> Sel[Arc]
particles
L-systems
MultiPen
Text
- simplevector
- ttf
performance plan
- canvas parity
- benchmark
- speed up SVG: avoid MutationRecords with SVG, CSS transforms
more SVG
- revisit curves and paths
- transform skewX, skewY
- clipping
variables plan
- add world variables
- add time-based lerps
- controls
maybe
- offset-based rendering (group?, children?, reference-frame?)
- vid export for animations
