This needs a title

Highest priority:

  • Clean up ramhorn_branch because it's fugly.
  • See automata_scratch/examples.py and implement some of the tougher examples.
    • spiral_nested_2 & spiral_nested_3 (how to compose efficiently?)
    • twisty_torus

Important but less critical:

  • Elegance & succinctness (my recent closure work may help with this):

    • What patterns can I factor out? I do some things regularly, like: the clockwise boundaries, the zigzag connections.
    • Declarative macro to shorten this Tag::Parent, Tag::Body nonsense - and perhaps force to groups of 3? Does this have any value, though, over just making helper functions like p(...) and b(...)?
    • I'm near certain a declarative macros can simplify some bigger things like my patterns with closures (e.g. the Y combinator like method for recursive calls).
  • Docs on modules

  • Look at performance.

    • Start at to_mesh_iter(). The cost of small appends/connects seems to be killing performance.
    • connect() is a big performance hot-spot: 85% of total time in one test, around 51% in extend(), 33% in clone(). It seems like I should be able to share geometry with the Rc (like noted above), defer copying until actually needed, and pre-allocate the vector to its size (which should be easy to compute).
  • Compute global scale factor, and perhaps pass it to a rule (to eventually be used for, perhaps, adaptive subdivision)

  • swept-isocontour stuff from /mnt/dev/graphics_misc/isosurfaces_2018_2019/spiral*.py

  • Catch-alls:

    • Grep for all TODOs in code, really.
    • Look at everything in README.md in automata_scratch.

If I'm bored:

  • Fix links in tri_mesh docs that use relative paths & do a PR?
  • Look in https://www.nalgebra.org/quick_reference/# for "pour obtain". Can I fix this somehow? Looks like a French-ism that made its way in.
  • Multithread! This looks very task-parallel anywhere that I branch.
  • Would being able to name a rule node (perhaps conditionally under some compile-time flag) help for debugging?
  • Use an actual logging framework.
  • Migrate tests to... well... actual tests.
Description
No description provided
Readme 2.7 MiB
Languages
Rust 100%