Author: Carlos Lopez <genet...@gmail.com> Date: Wed Jan 4 18:29:21 2012 +0100
Suit a better way to calculate gradient magnitude --- synfig-core/src/synfig/gradient.cpp | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/synfig-core/src/synfig/gradient.cpp b/synfig-core/src/synfig/gradient.cpp index 8e9ab47..340a59f 100644 --- a/synfig-core/src/synfig/gradient.cpp +++ b/synfig-core/src/synfig/gradient.cpp @@ -293,12 +293,21 @@ synfig::Gradient::operator/=(const float &rhs) Real synfig::Gradient::mag()const { - Real ret(0); - for (const_iterator iter = cpoints.begin(); iter!=cpoints.end(); iter++) + Real ret(0), cm, prev_pos; + const_iterator iter, next; + if(!cpoints.size()) + return 0.0; + next=cpoints.begin(); + iter=next++; + prev_pos=0.0; + for (; next!=cpoints.end(); iter++, next++) { - Real cm=(*iter).color.get_y(); + cm=iter->color.get_y()*((next->pos-iter->pos)/2 - prev_pos) ; ret+=cm*cm; + prev_pos = (next->pos-iter->pos)/2; } + cm=next->color.get_y()*(1.0 - prev_pos); + ret+=cm*cm; ret=sqrt(ret); return ret; } ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ Synfig-devl mailing list Synfig-devl@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/synfig-devl