Skip to content

Polygon

Write a program that can calculate some key values for any regular polygon.

Collecting Information

Ask the user to input the following values:

  • number_of_corners should be an integer and not less than 3
  • side_length should be a floating point number larger than 0
  • The value of the side_length is assumed to be given in mm

If the input values are not valid, report this in the output.

Doing the Math

Do this only if the input was valid.

From the given values you can infer a lot of other ones. Calculate the following values:

  • The Center angle (in degrees) is the angle between the projections from the center to two adjacent corners.
  • The Corner angle (in degrees) is the angle between two adjacent border segments on the inside of the polygon.
  • The Outer radius (in mm) is determined by the distance of any corner from the center point.
  • This is the radius of the smallest circle which can completely circumscribe the polygon.
  • The Inner radius (in mm) is calculated by the shortest distance fron the center to any border.
  • It happens to be the distance between the center point and the midpoint of any border segment.

Labeled polygon

You may need trigonometric functions from the math module for some calculations. Note that the functions offered work in radians not degrees, so you may need to convert between those two.

Hints

Doing the calculations in some orders is more difficult than in others. Using half-angles or half-lengths as intermediate values also can make the process a lot easier

Here is one possible approach:

center angle = 360° / number of corners
corner angle / 2 = 180° - 90°- center angle / 2
inner radius = tan(corner angle / 2) * (side length / 2)
outer radius = sqrt(inner radius² + (side length / 2)²)

Of course you can simplify those formulae and have to still take care of the whole radians ←→ degrees conversion.