- From: Jasper van de Gronde <th.v.d.gronde@hccnet.nl>
- Date: Fri, 31 Aug 2012 09:20:45 +0200
- To: www-svg@w3.org

On 30-08-12 12:44, Dr. Olaf Hoffmann wrote: > Jasper van de Gronde: > >> If you take the absolute value before interpolating, then you get the >> weird situation that a cone (for example) first gets "thinner" and then >> thicker again as you change the radius of one end from positive to negative. > > For animation? I was more thinking about someone tinkering with the source of an SVG or modifying a radius in a GUI. >> It also makes perfect sense if you represent a circle by x^2+y^2=r^2, or >> using a parametric representation. > > Is there really a difference between positive and negative r in a real > number space? > > In the example you give, the main difference seems to be, that the > center of the circle is changed, but the radius is always not negative. I think I may not have been clear enough about what the examples actually show. Both the center and the radius varied. And you're right that there isn't (much) of a difference between a positive and a negative radius, but there is a difference between interpolating from radius 5 to 5 and interpolating from radius 5 to -5, as demonstrated by my first and last examples: http://home.hccnet.nl/th.v.d.gronde/negativeRadius/tube.png http://home.hccnet.nl/th.v.d.gronde/negativeRadius/double%20cone.png In the first case you get a tube (constant radius), in the last one you get a double cone (the radius is zero at t=0.5). >> The images were drawn by solving >> (x-cx(t))^2+(y-cy(t))^2-r(t)^2 > = 0? Yes, the =0 was missing. (I think Canvas uses the same equation and mostly the same notation btw.) > Still you can interpolate with values="5;0;5" for r and > values="-5;5" for cx to get the same effect. I think you might be referring to animation here (and I'm not), but in principle you're right that you can get the same effect by splitting up the gradient in two. As such I'm not necessarily advocating allowing negative radii (although it should have negligible impact on implementation complexity), but I am trying to show why it makes no sense to take the absolute values of the radii at the endpoints and then interpolate. Basically negative radii do have an interpretation and it results in something other than what you get when you first take the absolute values. So I would suggest either allowing negative radii (and using their natural interpretation), or not allowing them (and clamping to zero for example). > And if it is allowed to set fx,fy outside the circle, fr positive or negative, > one still needs to define the effect for spreadMethod as already mentioned. > Because this is already problematic, if the point is on the > circle, do you have any idea about a meaningful behaviour > of spreadMethod, if fx,fy is outside and not corrected? > spreadMethod seems to be only simple, if there is not selfintersection > of the gradient. Actually, spreadMethod is pretty straightforward, regardless of where the fx,fy is in relation to the (other) circle. If you solve a quadratic equation like I did (and Cairo does, and probably many others), then you simply don't discard t values outside [0,1] and do whatever you want with them (repeat, reflect, pad, whatever). If you really draw circles, then you just draw them for all t that have some effect on the image. Of course, if the focus is exactly on the circle and you're trying to solve the quadratic equation, then you get some numerical problems, but that's regardless of whether or not you use spreadMethod or allow the focus to lie outside the circle (outside the circle is no problem, only /on/ the circle is a bit of a problem). (I'll try posting some more examples over the weekend.)

Received on Friday, 31 August 2012 07:21:16 UTC