Provides access to members that construct an elliptic arc segment using other geometries and measures.
Description
IConstructEllipticArc contains methods for constructing Full EllipticArcs, Quarter EllipticArcs, suggested EllipticArcs, and general EllipticArcs. Only ConstructUpToFivePoints can construct a rotated EllipticArc. All other EllipticArcs are unrotated (or rotated by Pi/2).
Members
Name | Description | |
---|---|---|
ConstructEnvelope | Constructs the inscribed ellipse of the given envelope. The ellipse is oriented clockwise. | |
ConstructQuarterEllipse | Construct an elliptic arc that starts at fromPoint, goes to toPoint, and spans an angle of pi/2. The rotation of the ellipse will be either 0 or pi/2. | |
ConstructTwoPointsEnvelope | Construct an elliptic arc that starts at fromPoint, goes to toPoint, and tries to have the embedded ellipse inscribed in the suggestedEnvelope. The result will have rotation of 0 or pi/2. | |
ConstructUpToFivePoints | Constructs an elliptic arc, given up to 5 points, such that the embedded ellipse passes through as many as possible. The arc will start at the first point and end at the second, passing through the third. |
IConstructEllipticArc.ConstructEnvelope Method
Constructs the inscribed ellipse of the given envelope. The ellipse is oriented clockwise.
Public Sub ConstructEnvelope ( _
ByVal boundingEnvelope As IEnvelope _
)
public void ConstructEnvelope (
IEnvelope boundingEnvelope
);
Description
ConstructEnvelope creates an EllipticArc from a given Envelope. The constructed EllipticArc is the full EllipticArc that has the given Envelope as its Envelope. The EllipticArc has a Major Axis equal to the larger of the Width and Height, and the Minor Axis equal to the smaller of the Width and Height. The CenterPoint of the EllipticArc is the CenterPoint of the Envelope.
Remarks
The method ignores the Z values of the given envelope and therefore the output elliptic arc is 2D.
public IEllipticArc CreateFullEclipticArcFull(IEnvelope envelope)
{
IConstructEllipticArc constructEllipticArc = new EllipticArcClass();
constructEllipticArc.ConstructEnvelope(envelope);
return constructEllipticArc as IEllipticArc;
}
Public Function CreateEArcFull(ByVal pEnv As ESRI.ArcGIS.Geometry.IEnvelope) As ESRI.ArcGIS.Geometry.IEllipticArc
Dim pConstEArc As ESRI.ArcGIS.Geometry.IConstructEllipticArc
pConstEArc = New ESRI.ArcGIS.Geometry.EllipticArc
pConstEArc.ConstructEnvelope(pEnv)
CreateEArcFull = pConstEArc
End Function
IConstructEllipticArc.ConstructQuarterEllipse Method
Construct an elliptic arc that starts at fromPoint, goes to toPoint, and spans an angle of pi/2. The rotation of the ellipse will be either 0 or pi/2.
Public Sub ConstructQuarterEllipse ( _
ByVal FromPoint As IPoint, _
ByVal ToPoint As IPoint, _
ByVal CCW As Boolean _
)
public void ConstructQuarterEllipse (
IPoint FromPoint,
IPoint ToPoint,
bool CCW
);
Description
ConstructQuarterEllipse constructs a quarter EllipticArc between a given From Point and To Point with the desired orientation. The From Point and the To Point lie on the ends of the EllipticArc Axes. The constructed quarter Ellipse can be thought of as being the EllipticArc within the envelope defined by the From Point and To Point with a semiMajor axis equal to the longer side of the envelope and a semiMinor axis equal to the shorter side of the envelope.
Remarks
private void ConstructQuarterEllipticArc()
{
IPoint point1 = new PointClass();
point1.PutCoords(0, 0);
IPoint point2 = new PointClass();
point2.PutCoords(100, 100);
IConstructEllipticArc constructionArc = new EllipticArcClass();
constructionArc.ConstructQuarterEllipse(point1, point2, true);
IEllipticArc ellipticArc = constructionArc as IEllipticArc;
System.Windows.Forms.MessageBox.Show("Length : " + ellipticArc.Length);
}
Private Sub ConstructQuarterEllipticArc()
Dim pCons As ESRI.ArcGIS.Geometry.IConstructEllipticArc
Dim pT1 As ESRI.ArcGIS.Geometry.IPoint
Dim pT2 As ESRI.ArcGIS.Geometry.IPoint
Dim pEArc As ESRI.ArcGIS.Geometry.IEllipticArc
pT1 = New ESRI.ArcGIS.Geometry.Point
pT2 = New ESRI.ArcGIS.Geometry.Point
pT1.PutCoords(0, 0)
pT2.PutCoords(100, 100)
pCons = New ESRI.ArcGIS.Geometry.EllipticArc
pCons.ConstructQuarterEllipse(pT1, pT2, True)
pEArc = pCons 'QI
Debug.Print("Length : " & pEArc.Length)
End Sub
IConstructEllipticArc.ConstructTwoPointsEnvelope Method
Construct an elliptic arc that starts at fromPoint, goes to toPoint, and tries to have the embedded ellipse inscribed in the suggestedEnvelope. The result will have rotation of 0 or pi/2.
Public Sub ConstructTwoPointsEnvelope ( _
ByVal FromPoint As IPoint, _
ByVal ToPoint As IPoint, _
ByVal suggestedEnvelope As IEnvelope, _
ByVal orientation As esriArcOrientation _
)
public void ConstructTwoPointsEnvelope (
IPoint FromPoint,
IPoint ToPoint,
IEnvelope suggestedEnvelope,
esriArcOrientation orientation
);
Description
ConstructTwoPointsEnvelope constructs an EllipticArc given the From and To Points and a suggested Envelope as input. The constructed EllipticArc has characteristics similar to the full ellipse defined by the input Envelope. The final EllipticArc may vary slightly from the input Envelope depending on how well the input Points fit the suggested EllipticArc.
Remarks
IConstructEllipticArc.ConstructUpToFivePoints Method
Constructs an elliptic arc, given up to 5 points, such that the embedded ellipse passes through as many as possible. The arc will start at the first point and end at the second, passing through the third.
Public Sub ConstructUpToFivePoints ( _
ByVal from As IPoint, _
ByVal to As IPoint, _
ByVal thru As IPoint, _
ByVal point4 As IPoint, _
ByVal point5 As IPoint _
)
public void ConstructUpToFivePoints (
IPoint from,
IPoint to,
IPoint thru,
IPoint point4,
IPoint point5
);
Description
Constructs an EllipticArc using as many of the zero to five input points as possible. The first input point is always the From Point of the constructed EllipticArc. The second input point is always the To Point of the constructed EllipticArc. The third point is the Thru Point of the EllipticArc and is always guaranteed to lie on the constructed EllipticArc. The fourth and fifth points may lie on either the constructed EllipticArc or the embedded extension of the EllipticArc. The first three input points are guaranteed to be used in the construction of the EllipticArc. The fourth and fifth points are used in preferential order as long as they do not create an invalid EllipticArc. All points used to construct an EllipticArc must lie on a Convex Hull, otherwise the fourth or fifth non-convex points are discarded to maintain convexity. Zero input points defines an empty EllipticArc. One input point defines a degenerate IsPoint EllipticArc. Two disjoint input points uniquely define a degenerate IsLine EllipticArc with the points at the end of the semiMajor axis with a Minor/Major Ratio of 0. Three non-colinear input points uniquely define an IsCircular EllipticArc in the same manner as ConstructThreePoints constructs a CircularArc. Four input points on a convex hull may be sufficient to uniquely define an unrotated (or Pi / 2 rotated) EllipticArc. For cases where an unrotated EllipticArc cannot be fit to the input points, a reasonable rotated EllipticArc is constructed to fit the input points (this EllipticArc is not the only rotated EllipticArc that can be fit to the input points.).
Remarks
private void ConstructFivePointArc()
{
IPoint point1 = new PointClass();
point1.PutCoords(5, 10);
IPoint point2 = new PointClass();
point2.PutCoords(15, 10);
IPoint point3 = new PointClass();
point3.PutCoords(15, 100);
IPoint point4 = new PointClass();
point4.PutCoords(50, 10);
IPoint point5 = new PointClass();
point5.PutCoords(50, 100);
IConstructEllipticArc constructEllipticArc = new EllipticArcClass();
constructEllipticArc.ConstructUpToFivePoints(point1, point2, point3, point4, point5);
IEllipticArc ellipitcArc = constructEllipticArc as IEllipticArc;
String report = "X, Y Center Point : " + ellipitcArc.CenterPoint.X + " , " + ellipitcArc.CenterPoint.Y + "\n" +
"Center angle in rad : " + ellipitcArc.CentralAngle + "\n" +
"Length : " + ellipitcArc.Length;
System.Windows.Forms.MessageBox.Show(report);
}
Private Sub ConstructUpToFivePointsEllipticArc()
Dim pCons As ESRI.ArcGIS.Geometry.IConstructEllipticArc
Dim pTr As ESRI.ArcGIS.Geometry.IPoint
Dim pFr As ESRI.ArcGIS.Geometry.IPoint
Dim pTo As ESRI.ArcGIS.Geometry.IPoint
Dim p4 As ESRI.ArcGIS.Geometry.IPoint
Dim p5 As ESRI.ArcGIS.Geometry.IPoint
Dim pEArc As ESRI.ArcGIS.Geometry.IEllipticArc
pTr = New ESRI.ArcGIS.Geometry.Point
pFr = New ESRI.ArcGIS.Geometry.Point
pTo = New ESRI.ArcGIS.Geometry.Point
p4 = New ESRI.ArcGIS.Geometry.Point
p5 = New ESRI.ArcGIS.Geometry.Point
pFr.PutCoords(0, -100)
pTo.PutCoords(0, -100)
pTr.PutCoords(200, 0)
p4.PutCoords(0, 100)
p5.PutCoords(-200, -0)
pCons = New ESRI.ArcGIS.Geometry.EllipticArc
pCons.ConstructUpToFivePoints(pFr, pTo, pTr, p4, p5)
pEArc = pCons 'QI
'Report
Debug.Print("X, Y Center Point : " & pEArc.CenterPoint.X & " , " & pEArc.CenterPoint.Y)
Debug.Print("Center angle in rad : " & pEArc.CentralAngle)
Debug.Print("Length : " & pEArc.Length)
End Sub
Classes that implement IConstructEllipticArc
Classes | Description |
---|---|
EllipticArc | A portion of the boundary of a 2D ellipse that connects two points; optionally has measure, height and ID attributes at each endpoint. |