ICircularArc Interface

Provides access to members that control properties of circular arcs.

Description

A CircularArc is an object that describes any portion of a circle. The size of the CircularArc is determined by the length of the Radius and the Central Angle. CircularArcs can be constructed by numerous different methods given a wide variety of input parameters. A CircularArc differs from an EllipticArc in that every point along the CircularArc must be a fixed distance (the Radius) from the CenterPoint.

Members

Name Description
Read-only property CenterPoint The center point.
Read/write property CentralAngle The included (or central) angle.
Read/write property ChordHeight The chord height (assigning preserves endpoints, and orientation unless chord height is < 0).
Method Complement Changes this arc into its complement; 'from' and 'to' points are unchanged.
Read-only property Dimension The topological dimension of this geometry.
Read-only property Envelope Creates a copy of this geometry's envelope and returns it.
Read/write property FromAngle The angle, measured from a horizontal line through this circular arc's center point, that defines where this arc starts.
Read/write property FromPoint The 'from' point of the curve.
Read-only property GeometryType The type of this geometry.
Method GeoNormalize Shifts longitudes, if need be, into a continuous range of 360 degrees.
Method GeoNormalizeFromLongitude Normalizes longitudes into a continuous range containing the longitude. This method is obsolete.
Method GetSubcurve Extracts a portion of this curve into a new curve.
Read-only property IsClosed Indicates if 'from' and 'to' points (of each part) are identical.
Read/write property IsCounterClockwise Indicates if this circular is oriented counter-clockwise from its 'from' point to its 'to' point.
Read-only property IsEmpty Indicates whether this geometry contains any points.
Read-only property IsLine Indicates if the arc has degenerated to a line (radius is infinite).
Read/write property IsMinor Indicates whether this circular arc is a minor arc or a major arc.
Read-only property IsPoint Indicates if the arc has degenerated to a point (radius is 0).
Read-only property Length The length of the curve.
Method Project Projects this geometry into a new spatial reference.
Method PutCoords Defines this arc by a center point, 'from' and 'to' points, and orientation. If the from and to points do not lie on the same circle, the arc's center point will be adjusted.
Method PutCoordsByAngle Defines this circular arc by a center point, 'from' angle, signed central angle, and radius.
Method PutRadiusByPoint Defines the radius of this circular arc to be the distance from the arc's center point to the input point; other properties remain unchanged.
Method QueryCenterPoint Copies the center point of this circular arc to the input point.
Method QueryCoords Copies the center, 'from' and 'to' points, orientation and major/minor property into the input parameters.
Method QueryCoordsByAngle Returns the center point, 'from' angle, signed central angle, and radius.
Method QueryEnvelope Copies this geometry's envelope properties into the specified envelope.
Method QueryFromPoint Copies this curve's 'from' point to the input point.
Method QueryNormal Constructs a line normal to a curve from a point at a specified distance along the curve.
Method QueryPoint Copies to outPoint the properties of a point on the curve at a specified distance from the beginning of the curve.
Method QueryPointAndDistance Finds the point on the curve closest to inPoint, then copies that point to outPoint; optionally calculates related items.
Method QueryTangent Constructs a line tangent to a curve from a point at a specified distance along the curve.
Method QueryToPoint Copies the curve's 'to' point into the input point.
Read/write property Radius The radius.
Method ReverseOrientation Reverses the parameterization of the curve ('from' point becomes 'to' point, first segment becomes last segment, etc).
Method SetEmpty Removes all points from this geometry.
Method SnapToSpatialReference Moves points of this geometry so that they can be represented in the precision of the geometry's associated spatial reference system.
Read/write property SpatialReference The spatial reference associated with this geometry.
Read/write property ToAngle The angle, measured from a horizontal line through this circular arc's center point, that defines where this arc ends.
Read/write property ToPoint The 'to' point of the curve.

ICircularArc.CenterPoint Property

The center point.

Public ReadOnly Property CenterPoint As IPoint
public IPoint CenterPoint {get;}

Description

Returns the Center Point of the CircularArc. The Center Point is the Point equidistant from all other points on the CircularArc, and it is the point from which the Radius is measured.

Remarks

CircularArc CenterPoint Example

ICircularArc.CentralAngle Property

The included (or central) angle.

Public Property CentralAngle As Double
public double CentralAngle {get; set;}

Description

The CentralAngle describes the span of the CircularArc. The CentralAngle is the angular measure between the FromAngle and the ToAngle. The CentralAngle is measured in Radians and is always between -2*Pi and 2*Pi. If the Central Angle > 0, then the Circular Arc is oriented CounterClockwise. If the Central Angle < 0, then the Circular Arc is oriented Clockwise.

Remarks

CircularArc CentralAngle Example

ICircularArc.ChordHeight Property

The chord height (assigning preserves endpoints, and orientation unless chord height is < 0).

Public Property ChordHeight As Double
public double ChordHeight {get; set;}

Description

The Chord Height is the positive perpendicular distance measured from the center of the chord to Circular Arc. The chord is the Line defined by the From and To Points of the Circular Arc. Setting the Chord Height redefines the Circular Arc, but maintains the existing From and To Points.

Remarks

CircularArc ChordHeight Example

ICircularArc.Complement Method

Changes this arc into its complement; 'from' and 'to' points are unchanged.

Public Sub Complement ( _
)
public void Complement (
);

Description

The Complement of a CircularArc is the CircularArc between the ToPoint and the FromPoint of the original CircularArc that creates a full circle when combined with the original CircularArc. The Complement maintains the same FromPoint and ToPoint as the original CircularArc, but has the different IsMinor and IsCounterClockwise values.

Remarks

Complement Example

//This example shows how to create a Complement of Circular arc.

        static void ComplementArcs()

        {

            //Create three points to draw an arc through.

            IPoint point1 = new ESRI.ArcGIS.Geometry.Point();

            IPoint point2 = new ESRI.ArcGIS.Geometry.Point();

            IPoint point3 = new ESRI.ArcGIS.Geometry.Point();

            point1.PutCoords(200, 200);

            point2.PutCoords(200, 300);

            point3.PutCoords(300, 300);

            //Construct a Three Point Arc and draw as solid line.

            IConstructCircularArc constructionArc = new CircularArc() as IConstructCircularArc;

            constructionArc.ConstructThreePoints(point1, point2, point3, true);

            //Draw the compliment of the previous arc as dashed line.

            ICircularArc evilCircularArc = constructionArc as ICircularArc;

            evilCircularArc.Complement();

        }
Public Sub ComplementArcs()

        'Create three points to draw an arc through.

        Dim pPoint1 As ESRI.ArcGIS.Geometry.IPoint, pPoint2 As ESRI.ArcGIS.Geometry.IPoint, pPoint3 As ESRI.ArcGIS.Geometry.IPoint

        pPoint1 = eCreatePoint(200, 200)

        pPoint2 = eCreatePoint(200, 300)

        pPoint3 = eCreatePoint(300, 300)

        'Construct a Three Point Arc and draw as solid line.

        Dim pCArc As ESRI.ArcGIS.Geometry.IConstructCircularArc

        pCArc = New ESRI.ArcGIS.Geometry.CircularArc

        pCArc.ConstructThreePoints(pPoint1, pPoint2, pPoint3, True)

        'Create the compliment of the previous arc as dashed line.

        Dim pCArcCmp As ESRI.ArcGIS.Geometry.ICircularArc

        pCArcCmp = pCArc

        pCArcCmp.Complement()

    End Sub



    Public Function eCreatePoint(ByVal X As Double, ByVal Y As Double) As ESRI.ArcGIS.Geometry.IPoint

        eCreatePoint = New ESRI.ArcGIS.Geometry.PointClass()

        eCreatePoint.PutCoords(X, Y)

    End Function

ICircularArc.FromAngle Property

The angle, measured from a horizontal line through this circular arc's center point, that defines where this arc starts.

Public Property FromAngle As Double
public double FromAngle {get; set;}

Description

The FromAngle is the angle from which the CircularArc starts. The FromAngle is measured in radians (there are 2*pi radians in a full circle. 0 Radians is the horizontal line parallel to the unrotated X-Axis extending to the right of the CenterPoint.). The FromAngle is the angle of the line drawn between the CenterPoint and the FromPoint.

Remarks

CircularArc FromAngle Example

ICircularArc.IsCounterClockwise Property

Indicates if this circular is oriented counter-clockwise from its 'from' point to its 'to' point.

Public Property IsCounterClockwise As Boolean
public bool IsCounterClockwise {get; set;}

Description

IsCounterClockwise returns TRUE if the CentralAngle is greater than 0. If the IsCounterClockwise values differ, setting IsCounterClockwise changes the CircularArc to its Complement.

Remarks

IsCCW Example

ICircularArc.IsLine Property

Indicates if the arc has degenerated to a line (radius is infinite).

Public ReadOnly Property IsLine As Boolean
public bool IsLine {get;}

Description

IsLine returns TRUE when the Radius of the CircularArc is Infinity.

Remarks

A CircularArc that returns TRUE can be constructed using ConstructThreePoints and three colinear points.

CircularArc IsLine Example

ICircularArc.IsMinor Property

Indicates whether this circular arc is a minor arc or a major arc.

Public Property IsMinor As Boolean
public bool IsMinor {get; set;}

Description

IsMinor is TRUE when the CentralAngle < Pi (180 degrees). If the IsMinor values differ, setting IsMinor changes the CircularArc to its Complement.

Remarks

CircularArc IsMinor Example

ICircularArc.IsPoint Property

Indicates if the arc has degenerated to a point (radius is 0).

Public ReadOnly Property IsPoint As Boolean
public bool IsPoint {get;}

Description

IsPoint returns TRUE when the Radius equals 0.

Remarks

IsPoint returns FALSE when the Radius > 0, even if the CentralAngle equals 0.

CircularArc IsPoint Example

ICircularArc.PutCoords Method

Defines this arc by a center point, 'from' and 'to' points, and orientation. If the from and to points do not lie on the same circle, the arc's center point will be adjusted.

Public Sub PutCoords ( _
    ByVal Center As IPoint, _
    ByVal from As IPoint, _
    ByVal to As IPoint, _
    ByVal arcOrientation As esriArcOrientation _
)
public void PutCoords (
    IPoint Center,
    IPoint from,
    IPoint to,
    esriArcOrientation arcOrientation
);

Description

Use to create a Circular Arc by specifying the Center Point, From Point, To Point, and ArcOrientation. Care must be taken to ensure that the ArcOrientation is not ambiguous (For half-circles, ArcOrientation must be either Clockwise or CounterClockwise, and when the From Point and To Point are the same, ArcOrientation must be either Minor or Major.).

Remarks

If the FromPoint, ToPoint and CenterPoint specified do not create a circle, the created arc will have its CenterPoint adjusted until the FromPoint and ToPoint can be accomodated on the same circle. Therefore the resultant arcs CenterPoint may not be exactly the same as the input CenterPoint.

ICircularArc PutCoords Example

ICircularArc.PutCoordsByAngle Method

Defines this circular arc by a center point, 'from' angle, signed central angle, and radius.

Public Sub PutCoordsByAngle ( _
    ByVal cp As IPoint, _
    ByVal FromAngle As Double, _
    ByVal CentralAngle As Double, _
    ByVal arcRadius As Double _
)
public void PutCoordsByAngle (
    IPoint cp,
    double FromAngle,
    double CentralAngle,
    double arcRadius
);

Description

PutCoordsByAngle creates a Circular Arc given the Center Point, the From Angle, the Central Angle, and the Radius.

Remarks

PutCoordsByAngle is one of the easiest ways to create a desired Circular Arc. However, due to numeric accuracy limitations of computers and trigonometric functions, the From and To Points may be very slightly offset from the expected coordinates. This is important to keep in mind when attempting to connect the endpoints to other segments.

ICircularArc PutCoordsByAngle Example

ICircularArc.PutRadiusByPoint Method

Defines the radius of this circular arc to be the distance from the arc's center point to the input point; other properties remain unchanged.

Public Sub PutRadiusByPoint ( _
    ByVal radialPoint As IPoint _
)
public void PutRadiusByPoint (
    IPoint radialPoint
);

Description

PutRadiusByPoint sets the Radius of the Circular Arc to be the distance between the Center Point and the input Point. This has the same effect as setting the Radius using the Radius property of the Circular Arc.

Remarks

CircularArc PutRadiusByPoint Example

ICircularArc.QueryCenterPoint Method

Copies the center point of this circular arc to the input point.

Public Sub QueryCenterPoint ( _
    ByVal Center As IPoint _
)
public void QueryCenterPoint (
    IPoint Center
);

Description

Returns the Center Point of the CircularArc. The Center Point is the Point equidistant from all other points on the CircularArc, and it is the point from which the Radius is measured.

Remarks

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

CircularArc QueryCenterPoint Example

private void showCenterPoint()

{

    //Create three points to draw an arc through.

    IPoint point1 = new ESRI.ArcGIS.Geometry.Point();

    IPoint point2 = new ESRI.ArcGIS.Geometry.Point();

    IPoint point3 = new ESRI.ArcGIS.Geometry.Point();

    point1.PutCoords(200, 200);

    point2.PutCoords(200, 300);

    point3.PutCoords(300, 300);

    //Construct a Three Point Arc.

    IConstructCircularArc constructionArc = new CircularArc() as IConstructCircularArc;

    constructionArc.ConstructThreePoints(point1, point2, point3, false);

    ICircularArc circularArc = constructionArc as ICircularArc;

    System.Windows.Forms.MessageBox.Show(

        "Values from QueryCenterPoint are: \n" + 

        "Center Point X coord: " + circularArc.CenterPoint.X + ",\n" +

        "Center Point Y coord: " + circularArc.CenterPoint.Y

        );

    

}

ICircularArc.QueryCoords Method

Copies the center, 'from' and 'to' points, orientation and major/minor property into the input parameters.

Public Sub QueryCoords ( _
    ByVal Center As IPoint, _
    ByVal from As IPoint, _
    ByVal to As IPoint, _
    ByRef isCCW As Boolean, _
    ByRef IsMinor As Boolean _
)
public void QueryCoords (
    IPoint Center,
    IPoint from,
    IPoint to,
    ref bool isCCW,
    ref bool IsMinor
);

Description

QueryCoords returns the Center Point, the From Point, the To Point, the value of IsCounterClockwise, and the value of IsMinor for the Circular Arc.

Remarks

These are the necessary inputs for PutCoords, except in special cases (half circle, full circle, and Central Angle = 0) where the ArcOrientation must know which of these cases exists to ensure that the desired Circular Arc is unambiguous.

-isCCW stands for "is counter clockwise"

ICircularArc QueryCoords Example

ICircularArc.QueryCoordsByAngle Method

Returns the center point, 'from' angle, signed central angle, and radius.

Public Sub QueryCoordsByAngle ( _
    ByVal Center As IPoint, _
    ByRef FromAngle As Double, _
    ByRef centerAngle As Double, _
    ByRef arcRadius As Double _
)
public void QueryCoordsByAngle (
    IPoint Center,
    ref double FromAngle,
    ref double centerAngle,
    ref double arcRadius
);

Description

Returns the Center Point, From Angle, Central Angle, and Radius for the Circular Arc. These are the same parameters used by PutCoordsByAngle to create the Circular Arc.

Remarks

ICircularArc QueryCoordsByAngle Example

ICircularArc.Radius Property

The radius.

Public Property Radius As Double
public double Radius {get; set;}

Description

The radius is the distance from the Center of the circle to the arc. This property can be used to query the current radius of the circular arc or assign a new radius which changes the location of the From and To Points of the Circular Arc, but maintains the From Angle, Central Angle, and Orientation.

Remarks

CircularArc Radius Example

ICircularArc.ToAngle Property

The angle, measured from a horizontal line through this circular arc's center point, that defines where this arc ends.

Public Property ToAngle As Double
public double ToAngle {get; set;}

Description

The ToAngle is the angle at which the CircularArc ends. The ToAngle is measured in radians (there are 2*pi radians in a full circle. 0 Radians is the horizontal line parallel to the unrotated X-Axis extending to the right of the CenterPoint.). The ToAngle is the angle of the line drawn between the CenterPoint and the ToPoint.

Remarks

CircularArc ToAngle Example

Inherited Interfaces

Interfaces Description
ICurve Provides access to properties and methods of all 1 dimensional curves (polylines, segments, boundaries of polygons, etc.).
IGeometry Provides access to members that describe properties and behavior of all geometric objects.

Classes that implement ICircularArc

Classes Description
CircularArc A portion of a circle that connects two points optionally has measure, height and ID attributes at each endpoint.

Remarks

ICircularArc Example

private void OutputArcProperties(ICircularArc circularArc)

    {

        String report = "Center Point: (" + circularArc.CenterPoint.X + ", " +

              circularArc.CenterPoint.Y + ")" + "\n" +

        "From Point: (" + circularArc.FromPoint.X + ", " +

              circularArc.FromPoint.Y + ")" + "\n" +

        "To Point: (" + circularArc.ToPoint.X + ", " +

              circularArc.ToPoint.Y + ")" + "\n" +

        "From Angle: " + circularArc.FromAngle + "\n" +

        "Central Angle: " + circularArc.CentralAngle + "\n" +

        "To Angle: " + circularArc.ToAngle + "\n" +

        "Radius: " + circularArc.Radius + "\n" +

        "Chord Height: " + circularArc.ChordHeight + "\n" +

        "IsCounterClockwise: " + circularArc.IsCounterClockwise + "\n" +

        "IsMinor: " + circularArc.IsMinor + "\n" +

        "IsLine: " + circularArc.IsLine + "\n" +

        "IsPoint: " + circularArc.IsPoint + ")";

        //IsLine and IsPoint check for degenerate cases of CircularArcs

        System.Windows.Forms.MessageBox.Show(report);

    }

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.