Re: A proposal for declaritive drawing (<replicate>) to be added into SVG

Dailey, David P. wrote:
> ...
> It would provide a way of making gradients (or rather gradient like 
> objects) that are not linear nor radial [2], of making patterns that are 
> non rectangular [2], and of making shapes that begin to approximate 
> 2.5-dimensions.
> ...
> Currently, it handles “from” and “to” for numeric values and rgb values, 
> for a wide range of attributes. “values” is handled (I think properly) 
> for numeric values only.

It looks very cool, but you might consider also allowing "seamless" 
replication, in the sense that the renderer itself can determine how 
many copies to show (or even to render it in a different way when 
possible). This would obviously make a lot of sense when zooming out (as 
you can then use less copies), but also when zooming in, as you could 
then let the renderer automatically increase the resolution as needed.

> Extensions to replicateTransform are obvious, as would be the 
> <replicateAttribute attributeName=”d”> to overlay interpolated paths as 
> in a <contour> map.  Replicating along a path, likewise would give us 
> much of the same functionality as diffusion curves, I think, but not as 
> much I think, since triangular blends as seen in the tri-colored 
> teardrop are a bit kludgy as you will see. At the same time, however, 
> the use of replicate to offer tilings and other patterns will make it 
> considerably richer in scope.

Indeed, I think the proposal you're making is interesting on its own 
merits, and not just as a way to create fancy gradients. In fact, 
Inkscape has a special command (Edit/Clone/Create Tiled Clones) 
specifically for creating repeating patterns of a single object. You 
might want to have a look at it to get some inspiration.

What I currently miss in your proposal is any support for "2D" 
replication. You're comparing the functionality to animation, but there 
you have only one dimension (time), here you have two. In principle this 
need not be a big problem, as you can of course always flatten the 
structure, but if you want to create a matrix-like pattern (which is not 
uncommon, in tilings for example) it would be a terrible waste of space 
(as well as inconvenient).

Possibly you could simply give some sensible meaning to nested replicate 
commands? That way you could even allow for N "dimensions" (useful if 
you want to draw something like a 3D grid of cubes using orthographic 
projection).

BTW, if you're interested in diffusion curves, I'm currently working on 
a method to generate (approximate) solutions that I can encode in SVG (I 
hope to be able to implement diffusion curves in Inkscape and use this 
as a fall-back).

Received on Wednesday, 7 April 2010 08:50:42 UTC