I totally trust your judgement. It could be flawed thinking on my part but in D3 the generators for scale, svg line, stacked area, etc generate data (configured by D3's related methods) which we can then translate to canvas or webgl and before that we can put into the app state structure. So the D3 approach while offering everything tightly integrated with the DOM is hackable and can be adapted to state-driven/reactive views. In case of geo projections of which D3 has so many the path function can output directly to canvas. Have not yet played with transitions to see if I can get tweened style strings out of them and convert but i cringe at the performance hit. We just learned how to work with D3 in a half sane manner. I've even introduced seamless immutability into JS specifically to deal with D3 apps' prolific use of global mutable state and be able to minimize and isolate shared mutable state into a single data structure (required only if components you build require to share state which is the case in most complex UI interactions) Your (or the Clojure) approach is much more radically sane but i have not yet found the other pieces. For example, if we're talking about reactive/immediate mode rendering then it would be nice to have a virtual canvas that did the diffing so we could drive the whole scene from app state and not have to repaint the whole canvas.
Half baked thoughts... Sent from my iPhone > On Jun 14, 2015, at 4:49 AM, Karsten Schmidt <i...@toxi.co.uk> wrote: > > Hi Marc, > > thanks - but re: transitions - actually, not really. This module is > intended to only do the actual mapping/visualization step in a longer > pipeline. That is, you're responsible to provide a visualization spec > with all elements & data pre-configured and this module will simply > transform/visualize that current state. There might be some higher > level transitions offered at some point, e.g. to tween between > cartesian & polar coordinate mapping (example [1]), but this too could > be achieved via a separate step injected before final serialization to > SVG (or whatever). Unlike with d3 and other libs which are directly > married to a DOM, here I try to approach this topic being completely > format independent until the last moment, meaning all visualization > methods will actually transform the viz spec into a scenegraph of pure > data (types from the geom parent lib) and are only then translated > into a concrete target format[2] (for SVG it actually transforms first > into hiccup syntax). That pure data approach also means that any other > type of transition can be easily achieved via other libs and I think > any transition feature would be implemented outside the scope of this > module. d3 tries to offer a one-stop solution addressing everything, > but I think the Clojure way is to keep our options open. > > Having said this, I think transitions are very important and am v.keen > to hear your feedback - I just don't want to go down a route which > turns this into a monolithic can-do-everything and I think the > approach taken allows for a number of higher level support modules, > which you would simply plug into the transformation pipeline to > compute intermediate, tweened visualization specs. For example, color > transitions can be done via thi.ng/color, more general tweening via > thi.ng/tweeny (and other libs)... > > Thanks, K. > > [1] http://haptic-data.com/toxiclibsjs/examples/polar-unravel > [2] In this initial release that intermediate format is still > outstanding and translation currently goes straight into hiccup > format, but that's only temporary behavior... > >> On 14 June 2015 at 04:58, Marc Fawzi <marc.fa...@gmail.com> wrote: >> Does the viz module aspire to catch up with d3 on the transitions front? >> Awesome stuff and will definitely try out the API and make some requests! >> >> Sent from my iPhone >> >>> On Jun 13, 2015, at 5:01 PM, Karsten Schmidt <i...@toxi.co.uk> wrote: >>> >>> Hi all, >>> >>> a new release of thi.ng/geom has just been pushed - now with the >>> beginnings of a new clj & cljs data visualization module, currently >>> supporting: >>> >>> - 7 layout/chart methods (bar, line, area, scatter, radar, contours, >>> stacked intervals) >>> - 3 axis types (linear, logarithmic, lens) >>> - cartesian or polar mapping >>> - flexible data input formats (via optional data item retrieval fns) >>> - custom shape drawing fns >>> - freedom to attach any other style/shape attributes (e.g. listeners) >>> - extensive documentation >>> >>> Check it all out here (in glorious literate programming format!): >>> >>> https://github.com/thi-ng/geom/blob/master/geom-viz/src/index.org >>> https://github.com/thi-ng/geom/blob/master/geom-viz/src/core.org >>> >>> The plan for this new viz module is to be output format agnostic, but >>> it currently only supports SVG (which by all means will be the main >>> use case anyhow) >>> >>> Other new things in this 0.0.856 version: >>> >>> - added voxel/isosurface examples >>> - updated dependencies (clj-1.7,0-RC1, cljs-3308, thi.ng/ndarray 0.2.0) >>> >>> Enjoy! K. >>> >>> -- >>> Karsten Schmidt >>> http://postspectacular.com | http://thi.ng | http://toxiclibs.org >>> >>> -- >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "ClojureScript" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to clojurescript+unsubscr...@googlegroups.com. >>> To post to this group, send email to clojurescr...@googlegroups.com. >>> Visit this group at http://groups.google.com/group/clojurescript. >> >> -- >> Note that posts from new members are moderated - please be patient with your >> first post. >> --- >> You received this message because you are subscribed to the Google Groups >> "ClojureScript" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojurescript+unsubscr...@googlegroups.com. >> To post to this group, send email to clojurescr...@googlegroups.com. >> Visit this group at http://groups.google.com/group/clojurescript. > > > > -- > Karsten Schmidt > http://postspectacular.com | http://thi.ng | http://toxiclibs.org > > -- > Note that posts from new members are moderated - please be patient with your > first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescr...@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.