CIRCLE_SEGMENT
Area, Height, Angle, Sampling and Quadrature
CIRCLE_SEGMENT
is a FORTRAN77 library which
carries out various computations associated with a circle segment,
using gnuplot to illustrate some of the computations.
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.
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.
CIRCLE_SEGMENT creates some graphics plots using gnuplot.
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 FORTRAN77 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 FORTRAN77 library which
performs geometric calculations in 2, 3 and M dimensional space,
including the computation of angles, areas, containment, distances,
intersections, lengths, and volumes.
GNUPLOT,
FORTRAN77 programs which
illustrate how a program can write data and command files
so that gnuplot can create plots of the program results.
STROUD,
a FORTRAN77 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.
Source Code:
Examples and Tests:
Test number 6 creates some samples of points in circle segments, and
writes out data files and gnuplot command files to create graphics:

sample01_boundary.txt,
data defining the boundary of the circle segment.

sample01_commands.txt,
commands to gnuplot to create a plot.

sample01_data.txt,
the sample data.

sample01.png,
the plot

sample02_boundary.txt,
data defining the boundary of the circle segment.

sample02_commands.txt,
commands to gnuplot to create a plot.

sample02_data.txt,
the sample data.

sample02.png,
the plot

sample03_boundary.txt,
data defining the boundary of the circle segment.

sample03_commands.txt,
commands to gnuplot to create a plot.

sample03_data.txt,
the sample data.

sample03.png,
the plot

sample04_boundary.txt,
data defining the boundary of the circle segment.

sample04_commands.txt,
commands to gnuplot to create a plot.

sample04_data.txt,
the sample data.

sample04.png,
the plot
List of Routines:

CH_IS_DIGIT returns TRUE if a character is a decimal digit.

CH_TO_DIGIT returns the integer value of a base 10 digit.

CIRCLE_SEGMENT_ANGLE_FROM_CHORD computes the angle of a circle segment.

CIRCLE_SEGMENT_ANGLE_FROM_CHORD_ANGLES computes angle of a circle segment.

CIRCLE_SEGMENT_ANGLE_FROM_HEIGHT computes the angle of a circle segment.

CIRCLE_SEGMENT_AREA_FROM_ANGLE computes the area of a circle segment.

CIRCLE_SEGMENT_AREA_FROM_CHORD computes the area of a circle segment.

CIRCLE_SEGMENT_AREA_FROM_HEIGHT computes the area of a circle segment.

CIRCLE_SEGMENT_AREA_FROM_SAMPLE computes the area of a circle segment.

CIRCLE_SEGMENT_CDF computes a CDF related to a circle segment.

CIRCLE_SEGMENT_CENTROID_FROM_CHORD computes the centroid of a circle segment.

CIRCLE_SEGMENT_CENTROID_FROM_HEIGHT computes centroid of a circle segment.

CIRCLE_SEGMENT_CENTROID_FROM_SAMPLE estimates a circle segment centroid.

CIRCLE_SEGMENT_CONTAINS_POINT reports whether a point is in a circle segment.

CIRCLE_SEGMENT_HEIGHT_FROM_ANGLE: height of a circle segment from angle.

CIRCLE_SEGMENT_HEIGHT_FROM_AREA: height of a circle segment from area.

CIRCLE_SEGMENT_HEIGHT_FROM_CHORD: height of a circle segment from chord.

CIRCLE_SEGMENT_ROTATION_FROM_CHORD computes the rotation of a circle segment.

CIRCLE_SEGMENT_SAMPLE_FROM_CHORD samples points from a circle segment.

CIRCLE_SEGMENT_SAMPLE_FROM_HEIGHT samples points from a circle segment.

CIRCLE_SEGMENT_WIDTH_FROM_HEIGHT computes the width of a circle segment.

DIGIT_INC increments a decimal digit.

DIGIT_TO_CH returns the character representation of a decimal digit.

FILENAME_INC increments a partially numeric filename.

GAUSS computes a Gauss quadrature rule.

GET_UNIT returns a free FORTRAN unit number.

I4VEC_SUM returns the sum of the entries of an I4VEC.

JACOBI_EIGENVALUE carries out the Jacobi eigenvalue iteration.

R8_ACOS computes the arc cosine function, with argument truncation.

R8_ASIN computes the arc sine function, with argument truncation.

R8_ATAN computes the inverse tangent of the ratio Y / X.

R8_EPSILON returns the R8 roundoff unit.

R8_UNIFORM_01 returns a pseudorandom R8 scaled to [0,1].

R8MAT_UNIFORM_01 returns a unit pseudorandom R8MAT.

R8VEC_LINSPACE creates a vector of linearly spaced values.

R8VEC_SUM sums the entries of an R8VEC.

R8VEC_UNIFORM_01 returns a unit pseudorandom R8VEC.

TIMESTAMP prints out the current YMDHMS date as a timestamp.

TRIDISOLVE solves a tridiagonal system of linear equations.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 06 July 2013.