<< 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. >>
Just remembered attrTween and styleTween do allow that very easily and output the tweened style/attribute string, so that is possible too But in ay case what is really missing from the D3 [hacked together] reactive approach is a canvas differ so we don't have to trade necessary optimization for raw performance of canvas. On Sun, Jun 14, 2015 at 6:59 AM, Marc Fawzi <marc.fa...@gmail.com> wrote: > 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 clojurescript@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 clojurescript@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 clojurescript@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 clojurescript@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript.