Solved

Calculate the radius of a n-sided polygon such that the area of the polygon matches the area of a circle with the same radius.

Posted on 2011-02-15
6
1,432 Views
Last Modified: 2012-08-13
Hi.

I know I should be able to do this, but I'm old and I've forgotten.

The issue is that SQL Server 2008 doesn't support a circle in its geospatial data type (as far as I can tell - still waiting on my Dev Ed).

So, I need to create an n-sided polygon that covers the same area as a circle of the same radius.

I'm using Google Maps to show this to TPTB within the company (I'm on a learning exercise, so having a LOT of fun).

Currently, I have the following code:
		fn_makePolygon = function(map, polygon, i_Points, i_Radius)
			{
			// Using the geometry library, calculate an array of points for the polygon
			var a_Path = [];
			var ll_Centre = map.getCenter();
			var f_Angle = 360 / i_Points;
			var f_Distance = i_Radius * 1609.344; // Meters to miles conversion.
			
			for(var i_Point = 0 ; i_Point <= i_Points ; ++i_Point)
				{
				a_Path.push
					(
					google.maps.geometry.spherical.computeOffset
						(
						ll_Centre,
						f_Distance,
						i_Point * f_Angle
						)
					);
				}
			polygon.setPath(a_Path);
			}

Open in new window


This creates an n-sided closed polygon whose points lie on a circle of the same radius - you can see this in action at n-sided polygon fits inside circle.

What I would like is actually 2 fold.

1 - To calculate the path of an n-sided polygon so that the circle fits inside the polygon (just like the existing polygon fits inside the circle)
2 - To calculate the path of an n-sided polygon so that the area of the circle and the polygon are the same.


Don't worry about the coding, if you have issues with that, just the maths required will be enough for me.

I'm guessing that all I really need is to adjust the meters/miles conversion as this is all that actually alters the side the polygon.


Regards,

Richard Quadling.

P.S. I'm using Google Chrome V10, so the sliders are not going to be visible in older browsers - simply enter the number and tab off the input seems to work OK for IE/FF. This is just a test script, so not an important issue.
0
Comment
Question by:RQuadling
  • 3
  • 2
6 Comments
 
LVL 18

Assisted Solution

by:deighton
deighton earned 100 total points
ID: 34896755
surely for a given radius, all circles and polygons have different areas

the area of a regular n-gon with distance from centre to vertex x  is

nx^2 sin (360 / 2n) cos(360 /2n)

so if you had a circle radius R, the radius r of an n-gon with the same area would be

nr^2 sin (360 / 2n) cos(360 /2n) = pi R^2

r = sqrt(pi R^2 / [nsin (360 / 2n) cos(360 /2n) ])
0
 
LVL 37

Accepted Solution

by:
TommySzalapski earned 400 total points
ID: 34897431
Note: since your code uses degrees, not radians, so am I. If you get really weird results, change all the 360s and 180s to 2pi and pi.

Given a circumradius c (distance from center to vertex) the area is
nc^2sin(360/n)/2
So if the circle's area is A then you want to make your vertices
sqrt(2A/nsin(360/n))
from the center.

To circumscribe the polygon around the circle, you want the apothem a (distance from center to closest point on edge) to be the same as the radius of the circle so you want the vertices to be
r sec(180/n)
from the center (where r is the radius of the circle and sec(180/n)=1/cos(180/n)
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34897449
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 37

Expert Comment

by:TommySzalapski
ID: 34897478
Here is where I got the other one (outer radius to area)
http://www.mathopenref.com/polygonregulararea.html
0
 
LVL 40

Author Comment

by:RQuadling
ID: 34899901
Excellent. I'll be incorporating the logic tomorrow and get back to you then.
0
 
LVL 40

Author Comment

by:RQuadling
ID: 34905498
Thanks for all of this.

I've got the following formula working ...


polygon_radius = sqrt( (pi * circle_radius^2 * 2) / (polygon_sides * SIN(360/polygon_sides) )

and in Javascript ...

var f_Distance = 1609.344 * Math.sqrt( (2 * Math.PI * i_Radius * i_Radius) / (i_Points * Math.sin(2 * Math.PI / i_Points) ) );

as Google Maps wants the value in meters and my users think in miles (as do the drivers).

Thank you all. Extremely useful comments.

Richard.



0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Add Context Menu Item 4 45
Poster Video HTML 5 Scale to fit video 3 38
wordpress display sub menu only when click 12 24
geting geocode of a user with using Google maps api 8 19
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now