Skip to content

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)

Wed Jul 18 2018

  • 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
    • Could revamp initialization with a single options object with everything in it. Not sure I like.
Clone this wiki locally