scientific and spatial data application exploration
// six petals, drawn in comterp. // the script is the picture. colors(3 10); // Red closedspline(160,160, 160,40, 220,55, 264,100, 160,160) colors(6 10); // Green closedspline(160,160, 264,100, 288,160, 264,220, 160,160) colors(5 10); // Yellow closedspline(160,160, 264,220, 220,265, 160,280, 160,160) colors(4 10); // Orange closedspline(160,160, 160,280, 100,265, 56,220, 160,160) colors(7 10); // Blue closedspline(160,160, 56,220, 32,160, 56,100, 160,160) colors(2 10); // Brown closedspline(160,160, 56,100, 100,55, 160,40, 160,160) colors(1 10); // Black circle, around it ellipse(160,160, 120,120)
Drawn in comterp — the script on the right is the picture on the left. Earth and hearth below, water and greenery across the middle, hill and light above.
Vectaport builds free C++ frameworks for direct-manipulation graphical editors — and the language that drives them. A picture and the commands that make it are one thing: type the commands, get the picture; serialize the picture, get the commands back. The same expression works at a prompt, over a socket, or between two editors drawing together across a network.
// fill the petals, but not the circle: s = $$select // stream the selection while((v=next(s)) != nil if(class(v)==`ClosedSplineComp // each petal... :then select(v); pattern(2))) // ...solid fill
Select, move, scale, rotate, copy, paste, frame to frame — every move in the editor is an expression. The flower above was filled by the lines above: stream the selection, keep the splines, fill each. A flipbook is a loop, and an edit is a substitution.
If every edit is a command, a command is a thing you can send. DrawServ is the drawing editor made distributed: two or more editors on different machines working the same drawing at once. Each graphic carries its own identity across the network, and edits propagate as the commands that made them — draw, move, recolor — so a stroke on one screen lands on the others. The same expression that draws is the expression that travels.
ivtools — the C++ frameworks underneath it all: idraw, drawtool, comdraw, DrawServ. · vhclmaps — USGS and military map display with a vehicle-motion simulation viewpoint; the moving viewpoint is the thing that showed DrawServ was possible. · ipl — a simulation environment for scalable asynchronous software; coordination by flow and completion. · flowtran — ComTerp grown into a flowgraph composition language
apt-get install ivtools-bin ivtools-dev // debian / ubuntu brew install ivtools // macos (for now)