-
Notifications
You must be signed in to change notification settings - Fork 14
ToDo list for NetLogo Lite & 3D
Owen Densmore edited this page Aug 14, 2019
·
33 revisions
-
NL-Lite: asap, roughly AS0->AS2. 2D canvas, D3, Three Ortho all would be fine for 2D View.
Currently using Three Ortho, but could easily change to canvas2d or D3. "+" indicates some work done.- + Plots: NL style dynamic time-line/histograms. (Observable/Vega done)
- 2D Drawing layer w/ pen up/down, stamp, import/export drawing
- + View & Web worker option. API?
- + Models: Convert rest of agentscript/as-app3d to models/Foo.js
- + Done: buttons, diffuse, droplets, exit, linktravel, mouse, wallfollower
- + Use these in TwoView and/or ThreeView
- Use controller: animator, dat.gui, REST, ...
- 2D Labels: Separate text layer(s)?
- Control Parameters
- Order Parameters: model output; parameter sweeps; raster/vector data
- AgentKit refactor: mono-repo or multi-repo or ??
- Documentation
- + Lots more models (AS0 ports done)
- Done:
- 2D Mouse: select patch, turtle, link; drag turtles. 3D below.
- UI Controller, dat.gui
- Separate models/ FooModel.js from foo.js.
- Merge modelIO.js into util.
- Refactor util.js, rollup
- => canvas, debug, types, math, async, objects, oofa, dom, modelIO
- Worker safe: async/canvas now have imageBitMap/blob support for use in workers
- ask(): help with mutations during iteration: adjust loop & give warnings
-
3D: update core for "enough" 3D. Roughly this 3 step plan. See: https://ccl.northwestern.edu/netlogo/docs/3d.html
- Step 1: Simple Z
- x,y,z; World.js: min/maxZ, numZ, depth, etc
- direction is still simply theta, the angle in the xy plane
- World.isOnWorld(x,y) includes z
- turtle.handleEdge includes z
- include z: setxy, moveTo, handleEdge, distance, a few more
- add: inSphere, inBox/Cube
- Step 2: Ad Phi and the rest of Z relating to phi
- include phi along with theta .. angle relative to xy plane
- 'towards' includes phi; also ahead, aheadAnRight/left etc, etc.
- Step 3: Convert Views/Apps: incorporate turtle's phi in views/apps.
- Add phi to model Turtles View
- 3D Mouse picking (key navigation)
- 3D Labels
- 3D Drawing layer
- Step 4 (maybe .. add "roll"? This likely not needed in core)
- Step 1: Simple Z
- Goesinta approaches:
- Defaults Object as Class Static. Two use cases
- Ctor uses Model.defaults() as initial values, setup can change them.
- Ctor takes another object which defaults to the Model.defaults(), user can modify.
- Note that both are use in AS.
Class Patch, Turtle, Link use the first, the current ctor world object does the second
- Note that both are use in AS.
- Could revamp initialization with a single options object with everything in it. Not sure I like.
- Defaults Object as Class Static. Two use cases