CIRCLE_SEGMENT
Area, Height, Angle, Sampling and Quadrature
CIRCLE_SEGMENT
is a MATLAB library which
carries out computations associated with a circle segment, including
height, width, angle, area, centroid, sampling, and quadrature.
Begin with a circle of radius R. Choose two points P1 and P2 on the
circle, and draw the chord P1:P2. This chord divides the circle
into two pieces, each of which is called a circle segment.
Consider one of the pieces. The "angle" THETA of this segment is the
angle P1:C:P2, where C is the center of the circle. Let Q be the point
on the chord P1:P2 which is closest to C. The "height" H of the segment
is the distance from Q to the perimeter of the circle. The "width" W
of the segment is the length of P1:P2.
This library considers various computations, including:
Determine the angle THETA, given R and H.
Determine the height H, given R and THETA.
Determine the height H, given R and AREA.
Determine the width W, given R and H.
Determine the area, given R and H.
Determine the centroid, given R and H.
Select points uniformly at random from a segment, given R and H.
Determine a cumulative density function (CDF) for the height H2
of a circle segment defined by a point selected at random from
a circle segment of height H.
Determine a quadrature rule that can be used to estimate integrals
of functions f(x,y) over the segment.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
CIRCLE_SEGMENT is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
CIRCLE_RULE,
a MATLAB library which
computes quadrature rules for the unit circle in 2D, that is,
the circumference of the circle of radius 1 and center (0,0).
GEOMETRY,
a MATLAB library which
performs geometric calculations in 2, 3 and M dimensional space,
including the computation of angles, areas, containment, distances,
intersections, lengths, and volumes.
STROUD,
a MATLAB library which
defines quadrature rules for a variety of Mdimensional regions,
including the interior of the square, cube and hypercube, the pyramid,
cone and ellipse, the hexagon, the Mdimensional octahedron,
the circle, sphere and hypersphere, the triangle, tetrahedron and simplex,
and the surface of the circle, sphere and hypersphere.
Reference:

Gaspare da Fies, Marco Vianello,
Trigonometric gaussian quadrature on subintervals of the period,
Electronic Transactions on Numerical Analysis,
Volume 39, pages 102112, 2012.

Walter Gautschi,
Orthogonal Polynomials: Computation and Approximation,
Oxford, 2004,
ISBN: 0198506724,
LC: QA404.5 G3555.
Source Code:

circle_segment_angle_from_chord.m,
computes the angle of a circle segment from the chord endpoints.

circle_segment_angle_from_chord_angles.m,
computes the angle of a circle segment from the chord angles.

circle_segment_angle_from_height.m,
computes the angle of a circle segment from its height.

circle_segment_area_from_angle.m,
computes the area of a circle segment from the angle.

circle_segment_area_from_chord.m,
computes the area of a circle segment from the coordinates of the endpoints
of the chord.

circle_segment_area_from_height.m,
computes the area of a circle segment from the height.

circle_segment_area_from_sample.m,
estimates the area of a circle segment, described by the coordinates of the
endpoints of the chords, using Monte Carlo sampling over the entire circle.

circle_segment_cdf.m,
computes a cumulative density function (CDF) for heights H2 of
circle segments formed by choosing a point at random in
a circle segment of height H.

circle_segment_centroid_from_chord.m,
computes the centroid of a circle segment from the coordinates of the endpoints
of the chord.

circle_segment_centroid_from_height.m,
computes the centroid of a circle segment from its height.

circle_segment_centroid_from_sample.m,
computes the centroid of a circle segment from a Monte Carlo sample.

circle_segment_contains_point.m,
determines whether a circle segment contains a point.

circle_segment_height_from_angle.m,
computes the height of a circle segment from its angle.

circle_segment_height_from_angle.m,
computes the height of a circle segment from its angle.

circle_segment_height_from_area.m,
computes the height of a circle segment from its area.

circle_segment_height_from_chord.m,
computes the height of a circle segment from its chord endpoints.

circle_segment_sample_from_chord.m,
computes random sample points from a circle segment based on
the chord endpoints.

circle_segment_sample_from_height.m,
computes random sample points from a circle segment based on the height.

circle_segment_width_from_height.m,
computes the width of a circle segment from its height.

circle01_to_circle.m,
maps points from the unit circle to a general one.

gauss.m,
computes a Gauss quadrature rule, by Walter Gautschi.

gqcircsect.m,
computes a Gauss quadrature rule for a circle sector
in the unit circle.

gqcircsegm.m,
computes a Gauss quadrature rule for a circle segment
in the unit circle.

r_jacobi.m,
computes recurrence coefficients for monic Jacobi polynomials,
by Dirk Laurie and Walter Gautschi.

r8_acos.m,
computes the arc cosine.

r8_asin.m,
computes the arc sine.

r8_atan.m,
computes the arc tangent.

r8_uniform_01.m,
returns a random R8 in [0,1].

r8mat_uniform_01.m,
returns a random R8MAT with values in [0,1].

r8vec_uniform_01.m,
returns a random R8VEC with values in [0,1].

timestamp.m,
prints the current YMDHMS date as a time stamp.

tridisolve.m,
solves a tridiagonal system of linear equations.

trigauss.m,
computes a trigonometric gaussian quadrature rule,
by Gaspare Da Fies, Alvise Sommariva, Marco Vianello.

trigauss_conversion.m,
converts Gauss to trigonometric Gauss quadrature,
by Gaspare Da Fies, Alvise Sommariva, Marco Vianello.

weights_3t.m,
Gauss quadrature weights from 3 term recurrence coefficients,
by Gaspare Da Fies, Alvise Sommariva, Marco Vianello.
Examples and Tests:

circle_segment_test.m,
calls all the tests.

circle_segment_test_output.txt,
the output file.

circle_segment_test01.m,
tests circle_segment_area_from_height().

circle_segment_test02.m,
tabulates a few quadrature rules with gqcircsegm().

circle_segment_test03.m,
plots a few quadrature rules computed by gqcircsegm().

circle_segment_test04.m,
approximates integrals with gqcircsegm().

circle_segment_test05.m,
tests circle_segment_area_from_height() and
circle_segment_height_from_area().

circle_segment_test06.m,
tests circle_segment_sample_from_height().

circle_segment_test07.m,
tests circle_segment_angle_from_height() and circle_segment_height_from_angle().

circle_segment_test08.m,
tests circle_segment_contains_point().

circle_segment_test09.m,
looks at the area and centroid calculations.

circle_segment_test10.m,
checks circle_segment_test04 by calling MATLAB's QUAD2D().

circle_segment_test11.m,
demonstrates circle_segment_rotation_from_chord();

circle_segment_test12.m,
plots some rotated rules from circle_segment_rule_from_chord().

circle_segment_test13.m,
demonstrates the use of gauss() to compute some quadrature rules.

circle_segment_test14.m,
demonstrates the use of r_jacobi() to compute recursion coefficients
for a quadrature rule associated with a Jacobi weight function.

circle_segment_test15.m,
demonstrates weights_t3() (and this test is NOT WORKING).

circle_segment_test16.m,
demonstrates gqcircsect().

circle_segment_test17.m,
demonstrates gqcircsegm().
Test 3 plots quadrature points for circle segments of various angles THETA:
Test 6 samples points from circle segments of various angles THETA:
Test 12 plots the quadrature points for several rules, defined on
circle segments that are specified by R (circle radius), C (circle center),
and P1, P2 (the points that define the chord.)

test12_rule1.png,
points for rule of radius 2, center (1,0), p1 at pi/4, p2 at 5pi/4.

test12_rule2.png,
points for rule of radius 1.5, center (1,2), p1 at 5pi/6, p2 at 10pi/6.
Test 16 plots points for circle sectors.
Test 17 plots points for a circle segment.
You can go up one level to
the MATLAB source codes.
Last revised on 22 May 2013.