• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: mathematical area of closed vector path
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mathematical area of closed vector path


  • Subject: Re: mathematical area of closed vector path
  • From: mark <email@hidden>
  • Date: Mon, 24 Jan 2005 19:11:19 -0800

Jeff's method of factoring out the arcs I would guess is less
computationally intensive (and probably more accurate) way than extending
mine to just treat the arcs as vectorsŠ

The code that I posted (I believe) implements the algorithm that I wrote and
Jeff URL'd (http://astronomy.swin.edu.au/~pbourke/geometry/polyarea/)

Mark

> From: mark <email@hidden>
> Date: Mon, 24 Jan 2005 19:06:19 -0800
> To: "P. George" <email@hidden>, email@hidden
> Subject: Re: mathematical area of closed vector path
>
> I believe that you want to model your figures a a closed polygon (arcs being
> just a set of vectors). From what I know, a concave or convex polygon's area
> is: 1/2 * SUM from i = 0 TO N-1 of (x[i]*y[i+1]-x[i+1]*y[i])
> Where N = # of verticies, and x[i] and y[i] are the x,y verticies of side i.
>
> I don't think this formula covers the case when the polygon intersects
> itself or has holes in it.  You'll also need to check for negative area,
> which can happen depending on rotation.
>
> Here's the (C++) code that I use (where outVertices is a <vector> of x,y
> verticies).  I do a special case for triangles and quadrilaterals, mainly
> for efficiency purposes.
>
> Hope this helps you get startedŠ
>
>
> long numOutVertices = outVertices.size();
> if(numOutVertices > 2)
> {
> double x0 = outVertices[0].GetX();
> double y0 = outVertices[0].GetY();
> if (numOutVertices == 3)        // use different area formula for
> triangle
> {    // (V1-V0)x(V2-V0) -->
> (x[1]-x[0])*(y[2]-y[0])-(x[2]-x[0])*(y[1]-y[0])
> // however the rotation is V0, V2, V1 (going clockwise)
> theArea = (outVertices[2].GetX() -x0)*(outVertices[2].GetY()-y0) -
> (outVertices[1].GetX() -x0)*(outVertices[1].GetY()-y0);
> }
> else if (numOutVertices == 4)        // use different area formula for
> quadrilateral
> {    // (x1-x0)*(y3-y0)-(x3-x0)*(y1-y0), with order being v0, v3, v2, v1
> double x1 = outVertices[3].GetX();
> double y1 = outVertices[3].GetY();
>
> double x3 = outVertices[1].GetX();
> double y3 = outVertices[1].GetY();
> theArea = (x1-x0)*(y3-y0)-(x3-x0)*(y1-y0);
> }
> else
> {
> //Check for invalid points
> for(int i = 0; i < numOutVertices; i++)
> {
> int xInd = (i + 1) % numOutVertices;
> int yInd = (i + 2) % numOutVertices;
> theArea += outVertices[xInd].GetX()
> * ( outVertices[yInd].GetY() - outVertices[i].GetY());
> }
> theArea *= 0.5;
> }
> if (theArea < 0)    // if polygon goes clockwise, the area will be
> negative
> {
> theArea = -theArea;
> }
> }
>
>
>> From: "P. George" <email@hidden>
>> Date: Mon, 24 Jan 2005 20:14:28 -0600
>> To: email@hidden
>> Subject: mathematical area of closed vector path
>>
>> How would one go about figuring out the mathematical area (xxx units
>> squared) of a closed vector path?
>>
>> Note: These paths will not be simple little boxes or circles.  Think
>> complex paths--composed of mulitple line segments and arc segments
>> (both convex and concave).
>>
>> Thanks.
>>
>> - Philip
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Cocoa-dev mailing list      (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Cocoa-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >Re: mathematical area of closed vector path (From: mark <email@hidden>)

  • Prev by Date: Re: NSImageView and mouse events
  • Next by Date: Re: Document bundles and rude users
  • Previous by thread: Re: mathematical area of closed vector path
  • Next by thread: Re: mathematical area of closed vector path
  • Index(es):
    • Date
    • Thread