Computes the area of the circular segment within a circle tangent to a reference line.

View versions (1)

Interface

#include <codecogs/maths/geometry/area/circle.h>

using namespace Maths::Geometry::Area;

This module computes the area of the circular segment formed between a circle tangent to a reference line and a line found at a given distance from this reference line.

The various cases are described by the images given in the following documentation, where the area which we want to compute is that of the filled shape.

Solution

Consider an orthogonal coordinate system and \mathcal{C}(O, r) a circle so that there exists P \in \mathcal{C}(O, r) with P on the x-axis. Also let d be parallel to the x-axis so that the distance from it to the x-axis is h \in \mathbb{R}_+ and d \cap \mathcal{C} = \{A, B\}.

Let S be the area which we must determine. Based on the relation between h and r we get the following cases:

1) h<r \Rightarrow S = \mathcal{A}_{APB}

1/circle_1-746.jpg
This part is only visible to registered users. Sign in to see it.

2) h = r \Rightarrow S = \mathcal{A}_{\mathcal C} /2

Because \mathcal{A}_{\mathcal C} = \pi r^2, we find the solution:

S = \frac{\pi r^2}{2}
(1)

3) r<h<2r \Rightarrow S = \mathcal{A}_{APB}

1/circle_3-746.jpg
This part is only visible to registered users. Sign in to see it.

4) h \geq 2r \Rightarrow S = \mathcal{A}_{\mathcal{C}}

Because \mathcal{A}_{\mathcal{C}} = \pi r^2, the solution is:

S = \pi r^2
(2)

Output:

r = 2.5

h = 0.0   Area = 0.000
h = 0.5   Area = 1.022
h = 1.0   Area = 2.796
h = 1.5   Area = 4.954
h = 2.0   Area = 7.334
h = 2.5   Area = 9.817
h = 3.0   Area = 12.301
h = 3.5   Area = 14.681
h = 4.0   Area = 16.839
h = 4.5   Area = 18.613
h = 5.0   Area = 19.635
h = 5.5   Area = 19.635

Example 1

#include <codecogs/maths/geometry/area/circle.h>
#include <stdio.h>

int main()
{
  // the length of the radius
  double r = 2.5;

  // display the lenghts of the radius
  printf("r = %.1lf\n\n", r);

  // display the area for different values of h
  for (double h = 0; h < 5.6; h += 0.5)
  printf("h = %.1lf   Area = %.3lf\n", h, 
  Geometry::Area::circle(r, h));

  return 0;
}

Parameters

r
the radius of the circle
h
the distance between line d and the reference line

Returns

The value of the desired area.
GPL Licence — free for non commercial use. See Licence details.

Interactive Calculator

r
h
Result