Re: Re: [SVG] [Batik] Polygon Area
"Cameron Laird [email protected] [svg-developers]" <[email protected]> Sat, 7 Nov 2015 19:17:44 -0600
| Newsgroups | gmane.text.xml.svg.devel |
|---|---|
| Message-ID | <CAC7gT6gLMhjEdq_9OhmZ-B-jEEXV89esVxx-QESv_fP6iQ7m8g@mail.gmail.com> |
--001a113b03ca6855090523fd3ec2 Content-Type: text/plain; charset=UTF-8 Yes: yes, this computation remains valid whether the polygon is convex or not. HOWEVER, it does *not* give the result one typically wants for self-intersecting boundaries. On Sat, Nov 7, 2015 at 9:31 AM, 'Dailey, David P.' [email protected] [svg-developers] <[email protected]> wrote: > Wow, Domenico! That is such a neat and concise computation. I didn't know > it could be so simple. It will take me a while, I think, to figure out why > it would work. Does it work for concave polygons as well as convex ones? > > > > cheers > > David > > ________________________________ > From: [email protected] <[email protected]> on > behalf of [email protected] [svg-developers] < > [email protected]> > Sent: Friday, November 06, 2015 5:26 PM > To: [email protected] > Subject: [svg-developers] Re: [SVG] [Batik] Polygon Area > > > > The code below is JavaScript. Pass X and Y arrays of x and y points > (clockwise or counterclockwise), and n number of vertices. If you need it > for a path element the SVG JavaScript binding provides dedicated functions > like getPointAtLength(), getPathSegAtLength(), etc. to convert the path > into polygon points. > > function polygon_area (X, Y, n) { > var > area = 0, > i, > j = n - 1; > > for (i = 0; i < n; j = i++) { > area += (X[j] + X[i]) * (Y[j] - Y[i]); > } > > return Math.abs(area / 2); > } > > Domenico > > > > > ------------------------------------ > Posted by: "Dailey, David P." <[email protected]> > ------------------------------------ > > ----- > To unsubscribe send a message to: > [email protected] > -or- > visit http://groups.yahoo.com/group/svg-developers and click "edit my > membership" > ---- > ------------------------------------ > > Yahoo Groups Links > > > > --001a113b03ca6855090523fd3ec2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <head> <style type=3D"text/css"> <!-- /* start of attachment style */ .ygrp-photo-title{ clear: both; font-size: smaller; height: 15px; overflow: hidden; text-align: center; width: 75px; } div.ygrp-photo{ background-position: center; background-repeat: no-repeat; background-color: white; border: 1px solid black; height: 62px; width: 62px; } div.photo-title=20 a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited { text-decoration: none;=20 } div.attach-table div.attach-row { clear: both; } div.attach-table div.attach-row div { float: left; /* margin: 2px;*/ } p { clear: both; padding: 15px 0 3px 0; overflow: hidden; } div.ygrp-file { width: 30px; valign: middle; } div.attach-table div.attach-row div div a { text-decoration: none; } div.attach-table div.attach-row div div span { font-weight: normal; } div.ygrp-file-title { font-weight: bold; } /* end of attachment style */ --> </style> </head> <html> <head> <style type=3D"text/css"> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial; margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-decoration: none; } --> </style> </head> <body> <!-- |**|begin egp html banner|**| --> <br><br> <!-- |**|end egp html banner|**| --> <div dir=3D"ltr">Yes: =C2=A0yes, this computation remains valid whether the= polygon is convex or not.=C2=A0 HOWEVER, it does *not* give the result one= typically wants for self-intersecting boundaries.</div><div class=3D"gmail= _extra"><br><div class=3D"gmail_quote">On Sat, Nov 7, 2015 at 9:31 AM, '= ;Dailey, David P.' <a href=3D"mailto:[email protected]">david.dailey= @sru.edu</a> [svg-developers] <span dir=3D"ltr"><<a href=3D"mailto:svg-d= [email protected]" target=3D"_blank">[email protected]= </a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin= :0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Wow, Domenico! Tha= t is such a neat and concise computation. I didn't know it could be so = simple. It will take me a while, I think, to figure out why it would work. = Does it work for concave polygons as well as convex ones?<br> <br> <br> <br> cheers<br> <br> David<br> <br> ________________________________<br> From: <a href=3D"mailto:[email protected]">svg-developers@yaho= ogroups.com</a> <<a href=3D"mailto:[email protected]">svg-d= [email protected]</a>> on behalf of <a href=3D"mailto:nst@dotusc= omus.com">[email protected]</a> [svg-developers] <<a href=3D"mailto:svg= [email protected]">[email protected]</a>><br> Sent: Friday, November 06, 2015 5:26 PM<br> To: <a href=3D"mailto:[email protected]">svg-developers@yahoog= roups.com</a><br> Subject: [svg-developers] Re: [SVG] [Batik] Polygon Area<br> <span class=3D""><br> <br> <br> The code below is JavaScript. Pass X and Y arrays of x and y points (clockw= ise or counterclockwise), and n number of vertices. If you need it for a pa= th element the SVG JavaScript binding provides dedicated functions like get= PointAtLength(), getPathSegAtLength(), etc. to convert the path into polygo= n points.<br> <br> =C2=A0 =C2=A0 function polygon_area (X, Y, n) {<br> =C2=A0 =C2=A0 =C2=A0 var<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 area =3D 0,<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 i,<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 j =3D n - 1;<br> <br> =C2=A0 =C2=A0 =C2=A0 for (i =3D 0; i < n; j =3D i++) {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 area +=3D (X[j] + X[i]) * (Y[j] - Y[i]);<br> =C2=A0 =C2=A0 =C2=A0 }<br> <br> =C2=A0 =C2=A0 =C2=A0 return Math.abs(area / 2);<br> =C2=A0 =C2=A0 }<br> <br> Domenico<br> <br> <br> <br> <br> </span>------------------------------------<br> Posted by: "Dailey, David P." <<a href=3D"mailto:david.dailey@= sru.edu">[email protected]</a>><br> ------------------------------------<br> <span class=3D""><br> -----<br> To unsubscribe send a message to: <a href=3D"mailto:svg-developers-unsubscr= [email protected]">[email protected]</a><br> -or-<br> visit <a href=3D"http://groups.yahoo.com/group/svg-developers" rel=3D"noref= errer" target=3D"_blank">http://groups.yahoo.com/group/svg-developers</a> a= nd click "edit my membership"<br> ----<br> </span>------------------------------------<br> <br> Yahoo Groups Links<br> <br> <*> To visit your group on the web, go to:<br> =C2=A0 =C2=A0 <a href=3D"http://groups.yahoo.com/group/svg-developers/" rel= =3D"noreferrer" target=3D"_blank">http://groups.yahoo.com/group/svg-develop= ers/</a><br> <br> <*> Your email settings:<br> =C2=A0 =C2=A0 Individual Email | Traditional<br> <br> <*> To change settings online go to:<br> =C2=A0 =C2=A0 <a href=3D"http://groups.yahoo.com/group/svg-developers/join"= rel=3D"noreferrer" target=3D"_blank">http://groups.yahoo.com/group/svg-dev= elopers/join</a><br> =C2=A0 =C2=A0 (Yahoo! ID required)<br> <br> <*> To change settings via email:<br> =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]">svg-= [email protected]</a><br> =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]= ">[email protected]</a><br> <br> <*> To unsubscribe from this group, send an email to:<br> =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]"= >[email protected]</a><br> <br> <*> Your use of Yahoo Groups is subject to:<br> =C2=A0 =C2=A0 <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/terms/"= rel=3D"noreferrer" target=3D"_blank">https://info.yahoo.com/legal/us/yahoo= /utos/terms/</a><br> <br> </blockquote></div><br></div> <!-- |**|begin egp html banner|**| --> <br> <br> <!-- |**|end egp html banner|**| --> <div width=3D"1" style=3D"color: white; clear: both;"/>__._,_.___</div> =20=20=20=20=20=20 =20=20 =20=20=20=20 <div id=3D"fromDMARC" style=3D"clear:both; margin-top: 10px;"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; backgroun= d-color:#E3E3E3;"> Posted by: Cameron Laird <[email protected]> <hr st= yle=3D"height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3= ;"> </div> <!-- Start Recommendations --> <!-- End Recommendations --> <!-- |**|begin egp html banner|**| --> <br><br> <tt> -----<BR> To unsubscribe send a message to: [email protected]= m<BR> -or-<BR> visit <a href=3D"http://groups.yahoo.com/group/svg-developers">http://group= s.yahoo.com/group/svg-developers</a> and click "edit my membership&quo= t;<BR> ----</tt> <br><br> <!-- |**|end egp html banner|**| --> <!-- |**|begin egp html banner|**| --> <img src=3D"http://geo.yahoo.com/serv?s=3D97476590/grpId=3D1298421/grpspI= d=3D1706030390/msgId=3D66498/stime=3D1446945466" width=3D"1" height=3D"1"> = <br> <!-- |**|end egp html banner|**| --> =20=20 <!-- |**|begin egp html banner|**| --> <br> =20=20=20 =20=20=20=20=20 =20 <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-fam= ily: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-tr= ansform: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/svg-de= velopers/info;_ylc=3DX3oDMTJlaGFpOWRiBF9TAzk3MzU5NzE0BGdycElkAzEyOTg0MjEEZ3= Jwc3BJZAMxNzA2MDMwMzkwBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ0Njk0NTQ2Ng--" sty= le=3D"text-decoration: none;">Visit Your Group</a></span> <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in= line;"> <li style=3D"border-right: 1px solid #000; font-weight: 700; di= splay: inline; padding: 0 5px; margin-left: 0;"> <span class=3D"cat"><a href=3D"https://groups.yahoo.com/neo/groups/sv= g-developers/members/all;_ylc=3DX3oDMTJmMzRmOHJtBF9TAzk3MzU5NzE0BGdycElkAzE= yOTg0MjEEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0NDY5ND= U0NjY-" style=3D"text-decoration: none;">New Members</a></span> <span class=3D"ct" style=3D"color: #ff7900;">1</span> </li> </ul> </div> <div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p= x; padding: 0 2px 0 0; clear: both;"> <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkNWxncjVvBF9TAzk3ND= c2NTkwBGdycElkAzEyOTg0MjEEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNDQ2OTQ1NDY2" style=3D"float: left;"><img src=3D"http://l.yimg.com/r= u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"= width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a> <div style=3D"color: #747575; float: right;"> • <a href=3D"https://i= nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio= n: none;">Privacy</a> • <a href=3D"mailto:svg-developers-unsubscribe@y= ahoogroups.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Unsu= bscribe</a> • <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/te= rms/" style=3D"text-decoration: none;">Terms of Use</a> </div> </div> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> =20=20=20 <br> <!-- |**|end egp html banner|**| --> <div style=3D"color: white; clear: both;"/>__,_._,___</div> </body> </html> --001a113b03ca6855090523fd3ec2--