Skip to content

Commit 505c5e2

Browse files
Included area of n sided regular polygon (TheAlgorithms#7438)
* Included area of n sided regular polygon Added a function to calculate the area of n sided regular polygons * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code standard fixes as per PR comments * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent c31ef5e commit 505c5e2

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

maths/area.py

+66-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
"""
22
Find the area of various geometric shapes
3+
Wikipedia reference: https://en.wikipedia.org/wiki/Area
34
"""
4-
from math import pi, sqrt
5+
from math import pi, sqrt, tan
56

67

78
def surface_area_cube(side_length: float) -> float:
89
"""
910
Calculate the Surface Area of a Cube.
11+
1012
>>> surface_area_cube(1)
1113
6
1214
>>> surface_area_cube(1.6)
@@ -28,6 +30,7 @@ def surface_area_cube(side_length: float) -> float:
2830
def surface_area_cuboid(length: float, breadth: float, height: float) -> float:
2931
"""
3032
Calculate the Surface Area of a Cuboid.
33+
3134
>>> surface_area_cuboid(1, 2, 3)
3235
22
3336
>>> surface_area_cuboid(0, 0, 0)
@@ -57,6 +60,7 @@ def surface_area_sphere(radius: float) -> float:
5760
Calculate the Surface Area of a Sphere.
5861
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
5962
Formula: 4 * pi * r^2
63+
6064
>>> surface_area_sphere(5)
6165
314.1592653589793
6266
>>> surface_area_sphere(1)
@@ -79,6 +83,7 @@ def surface_area_hemisphere(radius: float) -> float:
7983
"""
8084
Calculate the Surface Area of a Hemisphere.
8185
Formula: 3 * pi * r^2
86+
8287
>>> surface_area_hemisphere(5)
8388
235.61944901923448
8489
>>> surface_area_hemisphere(1)
@@ -102,6 +107,7 @@ def surface_area_cone(radius: float, height: float) -> float:
102107
Calculate the Surface Area of a Cone.
103108
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
104109
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
110+
105111
>>> surface_area_cone(10, 24)
106112
1130.9733552923256
107113
>>> surface_area_cone(6, 8)
@@ -133,6 +139,7 @@ def surface_area_conical_frustum(
133139
) -> float:
134140
"""
135141
Calculate the Surface Area of a Conical Frustum.
142+
136143
>>> surface_area_conical_frustum(1, 2, 3)
137144
45.511728065337266
138145
>>> surface_area_conical_frustum(4, 5, 6)
@@ -167,6 +174,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
167174
Calculate the Surface Area of a Cylinder.
168175
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
169176
Formula: 2 * pi * r * (h + r)
177+
170178
>>> surface_area_cylinder(7, 10)
171179
747.6990515543707
172180
>>> surface_area_cylinder(1.6, 2.6)
@@ -196,6 +204,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
196204
def area_rectangle(length: float, width: float) -> float:
197205
"""
198206
Calculate the area of a rectangle.
207+
199208
>>> area_rectangle(10, 20)
200209
200
201210
>>> area_rectangle(1.6, 2.6)
@@ -223,6 +232,7 @@ def area_rectangle(length: float, width: float) -> float:
223232
def area_square(side_length: float) -> float:
224233
"""
225234
Calculate the area of a square.
235+
226236
>>> area_square(10)
227237
100
228238
>>> area_square(0)
@@ -242,6 +252,7 @@ def area_square(side_length: float) -> float:
242252
def area_triangle(base: float, height: float) -> float:
243253
"""
244254
Calculate the area of a triangle given the base and height.
255+
245256
>>> area_triangle(10, 10)
246257
50.0
247258
>>> area_triangle(1.6, 2.6)
@@ -270,6 +281,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
270281
"""
271282
Calculate area of triangle when the length of 3 sides are known.
272283
This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
284+
273285
>>> area_triangle_three_sides(5, 12, 13)
274286
30.0
275287
>>> area_triangle_three_sides(10, 11, 12)
@@ -316,6 +328,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
316328
def area_parallelogram(base: float, height: float) -> float:
317329
"""
318330
Calculate the area of a parallelogram.
331+
319332
>>> area_parallelogram(10, 20)
320333
200
321334
>>> area_parallelogram(1.6, 2.6)
@@ -343,6 +356,7 @@ def area_parallelogram(base: float, height: float) -> float:
343356
def area_trapezium(base1: float, base2: float, height: float) -> float:
344357
"""
345358
Calculate the area of a trapezium.
359+
346360
>>> area_trapezium(10, 20, 30)
347361
450.0
348362
>>> area_trapezium(1.6, 2.6, 3.6)
@@ -386,6 +400,7 @@ def area_trapezium(base1: float, base2: float, height: float) -> float:
386400
def area_circle(radius: float) -> float:
387401
"""
388402
Calculate the area of a circle.
403+
389404
>>> area_circle(20)
390405
1256.6370614359173
391406
>>> area_circle(1.6)
@@ -405,6 +420,7 @@ def area_circle(radius: float) -> float:
405420
def area_ellipse(radius_x: float, radius_y: float) -> float:
406421
"""
407422
Calculate the area of a ellipse.
423+
408424
>>> area_ellipse(10, 10)
409425
314.1592653589793
410426
>>> area_ellipse(10, 20)
@@ -434,6 +450,7 @@ def area_ellipse(radius_x: float, radius_y: float) -> float:
434450
def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
435451
"""
436452
Calculate the area of a rhombus.
453+
437454
>>> area_rhombus(10, 20)
438455
100.0
439456
>>> area_rhombus(1.6, 2.6)
@@ -458,6 +475,51 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
458475
return 1 / 2 * diagonal_1 * diagonal_2
459476

460477

478+
def area_reg_polygon(sides: int, length: float) -> float:
479+
"""
480+
Calculate the area of a regular polygon.
481+
Wikipedia reference: https://en.wikipedia.org/wiki/Polygon#Regular_polygons
482+
Formula: (n*s^2*cot(pi/n))/4
483+
484+
>>> area_reg_polygon(3, 10)
485+
43.301270189221945
486+
>>> area_reg_polygon(4, 10)
487+
100.00000000000001
488+
>>> area_reg_polygon(0, 0)
489+
Traceback (most recent call last):
490+
...
491+
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
492+
three as number of sides
493+
>>> area_reg_polygon(-1, -2)
494+
Traceback (most recent call last):
495+
...
496+
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
497+
three as number of sides
498+
>>> area_reg_polygon(5, -2)
499+
Traceback (most recent call last):
500+
...
501+
ValueError: area_reg_polygon() only accepts non-negative values as \
502+
length of a side
503+
>>> area_reg_polygon(-1, 2)
504+
Traceback (most recent call last):
505+
...
506+
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
507+
three as number of sides
508+
"""
509+
if not isinstance(sides, int) or sides < 3:
510+
raise ValueError(
511+
"area_reg_polygon() only accepts integers greater than or \
512+
equal to three as number of sides"
513+
)
514+
elif length < 0:
515+
raise ValueError(
516+
"area_reg_polygon() only accepts non-negative values as \
517+
length of a side"
518+
)
519+
return (sides * length**2) / (4 * tan(pi / sides))
520+
return (sides * length**2) / (4 * tan(pi / sides))
521+
522+
461523
if __name__ == "__main__":
462524
import doctest
463525

@@ -481,3 +543,6 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
481543
print(f"Cone: {surface_area_cone(10, 20) = }")
482544
print(f"Conical Frustum: {surface_area_conical_frustum(10, 20, 30) = }")
483545
print(f"Cylinder: {surface_area_cylinder(10, 20) = }")
546+
print(f"Equilateral Triangle: {area_reg_polygon(3, 10) = }")
547+
print(f"Square: {area_reg_polygon(4, 10) = }")
548+
print(f"Reqular Pentagon: {area_reg_polygon(5, 10) = }")

0 commit comments

Comments
 (0)