Skip to content

Latest commit

 

History

History
112 lines (107 loc) · 5.7 KB

TODO.org

File metadata and controls

112 lines (107 loc) · 5.7 KB

Support for Unicode modules

Unicode variable names already work.

<2024-09-28 Sat> Start, StartEach, EndEach, End statements

needs better error handling - maybe some help at parse time

Implement simple environment queries ?PHLU

Implement ?E environment which calls an ‘external’ program

Implement a few interesting ‘external’ programs

This could be implemented by a WASM proggie or a worker.

Example files

reorganize and clean up

Create list of current tests to present a choice list

Organize tests

Pre-post condition expressions

This requires resolution of global/local/parameter variables and revision of formalMatch to not pollute local or global variables during matching done <2022-10-16 Sun>

Surfaces/meshes

Two different TABOP notions, pre-defined by arrays, and L-system generated, in addition to loading pref-defined BABYLON meshes. The first is relatively easy, the last really appealing from a usability pov

Pre-defined Arrays

Also have objects working and lightly tested These actually already work, but are sparsely tested

L-system generated

Extrusions go a long way toward this already, maybe enhance this or look at ribbons. Alternatively, directly create meshes from turtle positions Not sure about cpfg bspline design

<2022-09-05 Mon> initial handling of mesh instancing done: add/get named mesh, and

insertMesh as instance at turtle position. scaling and rotation done - need to work on instance specific material.

Still need to implement surface creation - this works with polygons, and paths

Need better method for referencing mesh to add

<2022-10-01 Sat>

New, breaking, syntax: ~(name, scale), which inserts mesh from Turtle3d.meshes at point

and using turtle orientation, optionally scaling it.

Supported Babylonjs types, glb, gltf

we can export, but not import, meshes

Export meshes

<2022-06-20 Mon> gltf export done

Splines for paths

Maybe rework end path, }, to take parameter specifying what to do with path, i.e. create path or create contour, since overlapping paths seems unlikely to be of use <2022-10-01 Sat> New syntax: }(type, name), where name is a string or number. The extrusion is added to the Turtle3d.meshes map by name and can be inserted using ~(name,scale)

Hermite

<2022-06-11 Sat> open Hermite spline done, including setting radii with spline still need to implement segments/pair of control point - currently #segments applies to entire spline

B-spline

on back burner - doable: there is a JS implementation, but…

Homomorphism productions

<2024-09-06 Fri>

Decomposition productions

<2024-09-06 Fri> This was not so hard

<2024-09-28 Sat> Rewrite Rewrite looking at homomorphisms and speed

Use sparse array for accumulating production replacements

<2024-09-01 Sun> This is faster and less memory intensive. Also modified cut operator to fit.

Explore Map Operator

<2024-11-21 Thu> Now that arrays seem to work, progress on this looks good. <2024-06-16 Sun> Something like @Map(axiom, parameter set list), to automate/simplify …[axiom(xi,yi,…)] Where one replacement is made for each parameter set in the list -> depending on the values in the parameter set. So, maybe:

p: ?EvalStuff(pset) < P : pset.x^2 + pset.y^2 < 1 -> P@Map(a, pslist)

?EvalStuff(pset) returns a list of parameter sets, i.e. objects referenced by pset.val. The condition would be evaluated and tested for each pset, and if true, the axiom is inserted in to the output. ?EvalStuff is more problematic than the replacement notion.

Possible candidates are to interate over all turtles, or some subset of them, or maybe tagged meshes? (how to tag a mesh? a named mesh is tagged its name when inserted?) <2024-09-06 Fri> Possible algorithm: create named/tagged mesh, say a small sphere. Insert clones of said mesh during expansion. Test operator performs some function on said spheres, returning some value, say a numeric value. Provide a mesh delete operator/module?

Animations

<2022-06-11 Sat> start working on this Step was first part of this, but after implementing multiple turtle drawing, that will be the primary focus for animations. That said, the polygon implementation in TABOP where polygons ignore branching is not possible using multiple turtles because it depends on left-to-right interpretation. Polygons that are contained in single branch are still fine. <2022-08-17 Wed> Need to get color/materials set up for multiple turtles <2022-08-18 Thu> implement global color table, so MT looks pretty good <2022-08-24 Wed> Bailed on animation - step mode is pretty good with multiple turtles and speed control. Animation, with capture of layers, will need to wait a bit more.

need layer to step through Lsystem.Rewrite and interp

screen capture to ‘movie’? what does babylon offer

Multiple turtle implementation

Attractive from a visualization standpoint, and maybe a cleaner encapsulation <2022-08-17 Wed> Initial changes done - move this to animation <2022-08-24 Wed> This is done, including UI to toggle between single and multiple turtle drawing.

UI

<2022-06-20 Mon> show color table and save mesh implemented

To React or not to React????

to svelte, and Not to react

Supported Babylonjs types, glb, gltf, ..

Export meshes

<2022-06-20 Mon> gltf export done

Bugs

extrusion orientation of straight paths

<2022-05-21 Sat> The orientation is fixed, i think, but something is broken with lighting <2022-06-11 Sat> ok, fixed now using added adjustFrame parameter to ExtrudeShapeXXX

reference to string parameters in productions is broken

<2022-10-31 Mon> all strings now normalized to “xxx”