Are you looking for: http://www.w3.org/TR/SVG/implnote.html#ArcParameterizationAlternatives If it is then a conversion routine written in JAVA is: ExtendedGeneralPath.java in the Batik source. I wrote one in JavaScript based on it. Bruce
--- In svg-developers@yahoogroups.com, yannick.bochatay@... wrote: > > Hi, > I try to write a function to update points of a path from a transformation > matrix. It's all ok except for elliptical arcs : > I can't find the correct coefficients for r1 r2 and angle. > Is it simplier to approximate arcs with bezier curves, like the > normalizedPathSegList property would do (but not implemented yet) ? > I wrote an example at http://jsfiddle.net/s32LX/, but I've put the code below > anyway. > Best regards, > > Yannick Bochatay > http://ybochatay.fr > > > > > SVGPathElement.prototype.mtx2attrs = function(mtx) { > > var seg,letter,point,pt={}, > angle = Math.atan2(mtx.b, mtx.a), > svg = this.ownerSVGElement, > list = this.pathSegList, > i=0, N = list.numberOfItems; > > /* this.rel2abs(); function that change relative paths to absolute */ > > for (;i<N;i++) { > seg = list.getItem(i); > letter = seg.pathSegTypeAsLetter; > > ['','1','2'].forEach(function(ind) { > > if (seg['x'+ind] === undefined && seg['y'+ind] === undefined) { > return; } > > if (seg['x'+ind] !== undefined) { pt['x'+ind] = seg['x'+ind]; } > if (seg['y'+ind] !== undefined) { pt['y'+ind] = seg['y'+ind]; } > > > var point = svg.createSVGPoint(); > point.x = pt['x'+ind]; point.y = pt['y'+ind]; > point = point.matrixTransform(mtx); > > seg['x'+ind] = point.x; > seg['y'+ind] = point.y; > }); > > if (angle!==0 && (letter === 'H' || letter === 'V')) { > this.pathSegList.replaceItem( > this.createSVGPathSegLinetoAbs(seg.x,seg.y) , i ); > } > else if (letter === 'A') { > /*what to do in that case ?? > seg.r1 = ? > seg.r2 = ? > seg.angle+= angle ? > */ > } > } > }; > ------------------------------------ ----- To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com -or- visit http://groups.yahoo.com/group/svg-developers and click "edit my membership" ----Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/svg-developers/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/svg-developers/join (Yahoo! ID required) <*> To change settings via email: svg-developers-dig...@yahoogroups.com svg-developers-fullfeatu...@yahoogroups.com <*> To unsubscribe from this group, send an email to: svg-developers-unsubscr...@yahoogroups.com <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/