com.esri.arcgis.geometry
Interface IEllipticArc

All Superinterfaces:
ICurve, IGeometry, java.io.Serializable
All Known Implementing Classes:
EllipticArc, IEllipticArcProxy

public interface IEllipticArc
extends ICurve, java.io.Serializable

Provides access to members that control properties of elliptic arc segments.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Description

An Elliptic Arc is an object that describes any portion of an ellipse.  The Major axis of the Elliptic Arc is the largest axis spanning between points on opposite sides of the ellipse.  The Minor axis is the perpendicular bisector of the Major axis.  Together, the Major and Minor axes determine the full ellipse on which the Elliptic Arc is generated.  These parameters may also be specified in terms of the semi-Major axis (half of the Major axis) and the MinorMajorRatio (the ratio of the Minor axis to the Major axis).  The ellipse may also be rotated.  Rotation is described by the Rotation Angle.  However, the effect of the Rotation Angle depends on the value of EllipseStd.  If EllipseStd is TRUE, all angles and axes are calculated with respect to the Major Axis as though the Major Axis was at 0 radians.  Also, the location of the From Point and To Point are given relative to the Center Point as though it is the origin.  If EllipseStd is FALSE, all angles are caluclated in standard Cartesian coordinates.  The portion of the complete ellipse represented by the Elliptic Arc is determined by the From Angle and Central Angle, both measured in radians.

Remarks

A CircularArc is a special case of an EllipticArc where the MinorMajorRatio is 1 (however, a CircularArc is NOT an EllipticArc).

EllipticArc Example

See Also:
IPoint, IEnvelope, IGeometry, ISegment

Method Summary
 void complement()
          Changes this ellipse into its complement; 'from' and 'to' points are unchanged.
 void getAxes(double[] semiMajor, double[] semiMinor, double[] minorMajorRatio)
          Gets the semi-major and semi-minor axes.
 IPoint getCenterPoint()
          The center point of the arc.
 double getCentralAngle()
          The included (or central) angle.
 double getFromAngle(boolean ellipseStd)
          The start angle (measured from a horizontal line through the center point) defining where the arc starts.
 double getToAngle(boolean ellipseStd)
          The end angle (measured from a horizontal line through the center point) defining where the arc ends.
 boolean isCircular()
          Indicates if this elliptical arc is acutally circular (major and minor axes same length).
 boolean isCounterClockwise()
          Indicates if this elliptic arc is oriented counter-clockwise from its 'from' point to its 'to' point.
 boolean isLine()
          Indicates if the arc is degenerated to a line.
 boolean isMinor()
          Indicates whether the arc is a minor arc or a major arc.
 boolean isPoint()
          Indicates if the arc is degenerated to a point.
 void putAxes(double semiMajor, double minorMajorRatio)
          Sets the semi-major and semi-minor axes.
 void putCoords(boolean ellipseStd, IPoint center, IPoint from, IPoint to, double rotationAngle, double minorMajorRatio, int orientation)
          Sets the center point and endpoints, angle of rotation, and orientation.
 void putCoordsByAngle(boolean ellipseStd, IPoint center, double fromAngle, double centralAngle, double rotationAngle, double semiMajor, double minorMajorRatio)
          Sets the center point, starting angle, signed central angle, angle of rotation, ratio of the minor axis to the major axis, and axes.
 void queryCenterPoint(IPoint center)
          Copies the center of this arc to the input point.
 void queryCoords(boolean ellipseStd, IPoint center, IPoint from, IPoint to, double[] rotationAngle, double[] minorMajorRatio, boolean[] isCCW, boolean[] minor)
          Copies the center and endpoints, angle of rotation, orientation and major/minor properties into the method parameters.
 void queryCoordsByAngle(boolean ellipseStd, IPoint center, double[] fromAngle, double[] centralAngle, double[] rotationAngle, double[] semiMajor, double[] minorMajorRatio)
          Returns the center point, starting angle, signed central angle, angle of rotation, ratio of the minor axis to the major axis, and axes.
 void setCentralAngle(double centralAngle)
          The included (or central) angle.
 void setFromAngle(boolean ellipseStd, double fromAngle)
          The start angle (measured from a horizontal line through the center point) defining where the arc starts.
 void setIsCounterClockwise(boolean isCCW)
          Indicates if this elliptic arc is oriented counter-clockwise from its 'from' point to its 'to' point.
 void setIsMinor(boolean isMinor)
          Indicates whether the arc is a minor arc or a major arc.
 void setToAngle(boolean ellipseStd, double toAngle)
          The end angle (measured from a horizontal line through the center point) defining where the arc ends.
 
Methods inherited from interface com.esri.arcgis.geometry.ICurve
getFromPoint, getLength, getSubcurve, getToPoint, isClosed, queryFromPoint, queryNormal, queryPoint, queryPointAndDistance, queryTangent, queryToPoint, reverseOrientation, setFromPoint, setToPoint
 
Methods inherited from interface com.esri.arcgis.geometry.IGeometry
geoNormalize, geoNormalizeFromLongitude, getDimension, getEnvelope, getGeometryType, getSpatialReference, isEmpty, project, queryEnvelope, setEmpty, setSpatialReferenceByRef, snapToSpatialReference
 

Method Detail

queryCoords

public void queryCoords(boolean ellipseStd,
                        IPoint center,
                        IPoint from,
                        IPoint to,
                        double[] rotationAngle,
                        double[] minorMajorRatio,
                        boolean[] isCCW,
                        boolean[] minor)
                 throws java.io.IOException,
                        AutomationException
Copies the center and endpoints, angle of rotation, orientation and major/minor properties into the method parameters.

Supported Platforms

Windows, Solaris, Linux

Description

Given the EllipseStd value, returns the Center Point, From Point, To Point, Rotation Angle, Minor Axis to Major Axis Ratio, IsCounterClockwise value, and IsMinor value of the Elliptic Arc.  If EllipseStd = TRUE, the From Point and To Point locations are relative offsets from the Center Point rather than the origin.

Remarks

These are the necessary inputs for PutCoords, except in special cases (half ellipse, full ellipse, Central Angle = 0, and Minor to Major Ratio = 0) where the ArcOrientation must know which of these cases exists to ensure that the desired Elliptic Arc is unambiguous. Any of the output parameters can be set to nil if that info is not desired.

-isCCW stands for "is counter clockwise"

IEllipticArc QueryCoords Example

Parameters:
ellipseStd - The ellipseStd (in)
center - A reference to a com.esri.arcgis.geometry.IPoint (in)
from - A reference to a com.esri.arcgis.geometry.IPoint (in)
to - A reference to a com.esri.arcgis.geometry.IPoint (in)
rotationAngle - The rotationAngle (in/out: use single element array)
minorMajorRatio - The minorMajorRatio (in/out: use single element array)
isCCW - The isCCW (in/out: use single element array)
minor - The minor (in/out: use single element array)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

putCoords

public void putCoords(boolean ellipseStd,
                      IPoint center,
                      IPoint from,
                      IPoint to,
                      double rotationAngle,
                      double minorMajorRatio,
                      int orientation)
               throws java.io.IOException,
                      AutomationException
Sets the center point and endpoints, angle of rotation, and orientation.

Supported Platforms

Windows, Solaris, Linux

Description

PutCoords creates an Elliptic Arc given the EllipseStd value, Center Point, From Point, To Point, Rotation Angle, Minor Axis to Major Axis Ratio, and the Arc Orientation.  If EllipseStd = TRUE, the From Point and To Point locations are relative offsets from the Center Point rather than the origin.

Remarks

Unless the coordinates of the From and To Points are exactly on the defined Elliptic Arc, PutCoords is likely to create an invalid Elliptic Arc.  Therefore, it is highly recommended that another Elliptic Arc creation method is used unless all of the necessary input parameters are exactly known.

IEllipticArc PutCoords Example

Parameters:
ellipseStd - The ellipseStd (in)
center - A reference to a com.esri.arcgis.geometry.IPoint (in)
from - A reference to a com.esri.arcgis.geometry.IPoint (in)
to - A reference to a com.esri.arcgis.geometry.IPoint (in)
rotationAngle - The rotationAngle (in)
minorMajorRatio - The minorMajorRatio (in)
orientation - A com.esri.arcgis.geometry.esriArcOrientation constant (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryCoordsByAngle

public void queryCoordsByAngle(boolean ellipseStd,
                               IPoint center,
                               double[] fromAngle,
                               double[] centralAngle,
                               double[] rotationAngle,
                               double[] semiMajor,
                               double[] minorMajorRatio)
                        throws java.io.IOException,
                               AutomationException
Returns the center point, starting angle, signed central angle, angle of rotation, ratio of the minor axis to the major axis, and axes.

Supported Platforms

Windows, Solaris, Linux

Description

Given the EllipseStd value, returns the Center Point, From Angle, Central Angle, Rotation Angle, semi-Major axis length, and Minor Axis to Major Axis Ratio for the Elliptic Arc.  These are the same parameters used by PutCoordsByAngle to create the Elliptic Arc.  If EllipseStd = TRUE, the From Angle is relative to the rotated semi-Major Axis rather than the X-Axis.

Remarks

 

IEllipticArc QueryCoordsByAngle Example

Parameters:
ellipseStd - The ellipseStd (in)
center - A reference to a com.esri.arcgis.geometry.IPoint (in)
fromAngle - The fromAngle (in/out: use single element array)
centralAngle - The centralAngle (in/out: use single element array)
rotationAngle - The rotationAngle (in/out: use single element array)
semiMajor - The semiMajor (in/out: use single element array)
minorMajorRatio - The minorMajorRatio (in/out: use single element array)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

putCoordsByAngle

public void putCoordsByAngle(boolean ellipseStd,
                             IPoint center,
                             double fromAngle,
                             double centralAngle,
                             double rotationAngle,
                             double semiMajor,
                             double minorMajorRatio)
                      throws java.io.IOException,
                             AutomationException
Sets the center point, starting angle, signed central angle, angle of rotation, ratio of the minor axis to the major axis, and axes.

Supported Platforms

Windows, Solaris, Linux

Description

Creates an Elliptic Arc given the EllipseStd value, Center Point, From Angle, Central Angle, Rotation Angle, semi-Major Axis length, and Minor Axis to Major Axis Ratio.  If EllipseStd = TRUE, the From Angle is relative to the rotated semi-Major Axis rather than the X-Axis.

Remarks

This is the recommended way to create an arbitrary Elliptic 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.

IEllipticArc PutCoordsByAngle Example

Parameters:
ellipseStd - The ellipseStd (in)
center - A reference to a com.esri.arcgis.geometry.IPoint (in)
fromAngle - The fromAngle (in)
centralAngle - The centralAngle (in)
rotationAngle - The rotationAngle (in)
semiMajor - The semiMajor (in)
minorMajorRatio - The minorMajorRatio (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCenterPoint

public IPoint getCenterPoint()
                      throws java.io.IOException,
                             AutomationException
The center point of the arc.

Supported Platforms

Windows, Solaris, Linux

Description

The CenterPoint is the point where the Major Axis and Minor Axis of the EllipticArc intersect.  The CenterPoint is the point from which all angles and distances are calculated to create the EllipticArc.

Remarks

 

EllipticArc CenterPoint Example

Returns:
A reference to a com.esri.arcgis.geometry.IPoint
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryCenterPoint

public void queryCenterPoint(IPoint center)
                      throws java.io.IOException,
                             AutomationException
Copies the center of this arc to the input point.

Supported Platforms

Windows, Solaris, Linux

Description

The CenterPoint is the point where the Major Axis and Minor Axis of the EllipticArc intersect.  The CenterPoint is the point from which all angles and distances are calculated to create the EllipticArc. You must instantiate the Point before calling QueryCenterPoint. For example,

Dim pPoint as IPoint
Set pPoint = New Point

Remarks

The QueryCenterPoint method should be used in performance critical situations, where the center point of several arcs needs to be retrieved. The point is populated (not created) by the method. For example, this can be used to get the center point of several arcs in a loop. Creating the point only once outside the loop may improve performance for large number of arcs.

EllipticArc QueryCenterPoint Example

Parameters:
center - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getAxes

public void getAxes(double[] semiMajor,
                    double[] semiMinor,
                    double[] minorMajorRatio)
             throws java.io.IOException,
                    AutomationException
Gets the semi-major and semi-minor axes.

Supported Platforms

Windows, Solaris, Linux

Description

Returns the Major Axis, the Minor Axis, and the ratio of the Minor Axis to the Major Axis.  The Major Axis is the larger of the two Axes, and the Minor Axis is the smaller Axis.  The Major Axis always lies on the line between 0 and Pi Radians in EllipseStd, and the Minor Axis always lies on the line between Pi/2 and 3*Pi/2 Radian in EllipseStd.

Remarks

The Axes can be set using PutAxes.

EllipticArc GetAxes Example

Parameters:
semiMajor - The semiMajor (in/out: use single element array)
semiMinor - The semiMinor (in/out: use single element array)
minorMajorRatio - The minorMajorRatio (in/out: use single element array)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

putAxes

public void putAxes(double semiMajor,
                    double minorMajorRatio)
             throws java.io.IOException,
                    AutomationException
Sets the semi-major and semi-minor axes.

Supported Platforms

Windows, Solaris, Linux

Description

Sets the Major Axis and the Minor Axis.  The Major Axis is the larger of the two Axes, and the Minor Axis is the smaller Axis.  The Major Axis always lies on the line between 0 and Pi Radians in EllipseStd, and the Minor Axis always lies on the line between Pi/2 and 3*Pi/2 Radian in EllipseStd.

Remarks

The Axes can be returned using GetAxes.

EllipticArc PutAxes Example

Parameters:
semiMajor - The semiMajor (in)
minorMajorRatio - The minorMajorRatio (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getFromAngle

public double getFromAngle(boolean ellipseStd)
                    throws java.io.IOException,
                           AutomationException
The start angle (measured from a horizontal line through the center point) defining where the arc starts.

Supported Platforms

Windows, Solaris, Linux

Description

The From Angle is the angle of the Line defined by the Center Point and the From Point of the Elliptic Arc.  Setting the From Angle changes the From Point of the Elliptic Arc without altering the embedded geometry.  The From Angle is measured in radians (there are 2*pi radians in a full ellipse).  If EllipseStd = TRUE, the From Angle is relative to the rotated semi-Major Axis rather than the X-Axis.

Remarks

 

EllipticArc FromAngle Example

Parameters:
ellipseStd - The ellipseStd (in)
Returns:
The fromAngle
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setFromAngle

public void setFromAngle(boolean ellipseStd,
                         double fromAngle)
                  throws java.io.IOException,
                         AutomationException
The start angle (measured from a horizontal line through the center point) defining where the arc starts.

Supported Platforms

Windows, Solaris, Linux

Parameters:
ellipseStd - The ellipseStd (in)
fromAngle - The fromAngle (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getToAngle

public double getToAngle(boolean ellipseStd)
                  throws java.io.IOException,
                         AutomationException
The end angle (measured from a horizontal line through the center point) defining where the arc ends.

Supported Platforms

Windows, Solaris, Linux

Description

The To Angle is the angle of the Line defined by the Center Point and the To Point of the Elliptic Arc.  Setting the To Angle changes the To Point of the Elliptic Arc without altering the embedded geometry.  The To Angle is measured in radians (there are 2*pi radians in a full ellipse).  If EllipseStd = TRUE, the To Angle is relative to the rotated semi-Major Axis rather than the X-Axis.

Remarks

 

EllipticArc ToAngle Example

Parameters:
ellipseStd - The ellipseStd (in)
Returns:
The toAngle
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setToAngle

public void setToAngle(boolean ellipseStd,
                       double toAngle)
                throws java.io.IOException,
                       AutomationException
The end angle (measured from a horizontal line through the center point) defining where the arc ends.

Supported Platforms

Windows, Solaris, Linux

Parameters:
ellipseStd - The ellipseStd (in)
toAngle - The toAngle (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCentralAngle

public double getCentralAngle()
                       throws java.io.IOException,
                              AutomationException
The included (or central) angle.

Supported Platforms

Windows, Solaris, Linux

Description

The CentralAngle describes the span of the EllipticArc.  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 CentralAngle > 0, then the EllipticArc is oriented in a CounterClockwise direction.

Remarks

 

EllipticArc CentralAngle Example

Returns:
The centralAngle
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setCentralAngle

public void setCentralAngle(double centralAngle)
                     throws java.io.IOException,
                            AutomationException
The included (or central) angle.

Supported Platforms

Windows, Solaris, Linux

Parameters:
centralAngle - The centralAngle (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isPoint

public boolean isPoint()
                throws java.io.IOException,
                       AutomationException
Indicates if the arc is degenerated to a point.

Returns:
The isPoint
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isLine

public boolean isLine()
               throws java.io.IOException,
                      AutomationException
Indicates if the arc is degenerated to a line.

Returns:
The isLine
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isCounterClockwise

public boolean isCounterClockwise()
                           throws java.io.IOException,
                                  AutomationException
Indicates if this elliptic arc is oriented counter-clockwise from its 'from' point to its 'to' point.

Returns:
The isCCW
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIsCounterClockwise

public void setIsCounterClockwise(boolean isCCW)
                           throws java.io.IOException,
                                  AutomationException
Indicates if this elliptic arc is oriented counter-clockwise from its 'from' point to its 'to' point.

Supported Platforms

Windows, Solaris, Linux

Parameters:
isCCW - The isCCW (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isMinor

public boolean isMinor()
                throws java.io.IOException,
                       AutomationException
Indicates whether the arc is a minor arc or a major arc.

Returns:
The isMinor
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIsMinor

public void setIsMinor(boolean isMinor)
                throws java.io.IOException,
                       AutomationException
Indicates whether the arc is a minor arc or a major arc.

Supported Platforms

Windows, Solaris, Linux

Parameters:
isMinor - The isMinor (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

complement

public void complement()
                throws java.io.IOException,
                       AutomationException
Changes this ellipse into its complement; 'from' and 'to' points are unchanged.

Supported Platforms

Windows, Solaris, Linux

Description

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

Remarks

 

Complement Example

Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isCircular

public boolean isCircular()
                   throws java.io.IOException,
                          AutomationException
Indicates if this elliptical arc is acutally circular (major and minor axes same length).

Returns:
The isCircular
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.