This document is archived and information here might be outdated.  Recommended version.


IConstructCircularArc.ConstructTangentArcTangent Method (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference (Geometry)  

IConstructCircularArc.ConstructTangentArcTangent Method

Constructs an arc with a common tangent to the input segment, a given arc length and a tangent length.

[Visual Basic .NET]
Public Sub ConstructTangentArcTangent ( _
    ByVal Segment As ISegment, _
    ByVal atStart As Boolean, _
    ByVal isCCW As Boolean, _
    ByVal arcDistance As Double, _
    ByVal tangentDistance As Double _
)
[C#]
public void ConstructTangentArcTangent (
    ISegment Segment,
    bool atStart,
    bool isCCW,
    double arcDistance,
    double tangentDistance
);
[C++]
HRESULT ConstructTangentArcTangent(
  ISegment* Segment,
  VARIANT_BOOL atStart,
  VARIANT_BOOL isCCW,
  double arcDistance,
  double tangentDistance
);
[C++]

Parameters Segment
Segment is a parameter of type ISegment atStart atStart is a parameter of type VARIANT_BOOL isCCW isCCW is a parameter of type VARIANT_BOOL arcDistance arcDistance is a parameter of type double tangentDistance tangentDistance is a parameter of type double

Product Availability

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

Description

Constructs a CircularArc given the Tangent Segment, the desired segment endpoint (the From Point), the desired orientation, the desired CircularArc Length, and the desired Tangent Distance.  Only IsMinor CircularArcs can be constructed.  The Tangent Distance must be greater than half the Arc Distance, otherwise an error is returned.

Remarks

-isCCW stands for "is counter clockwise"

ConstructCircularArc Tangent Segment Example

ConstructCircularArc Tangent Distance Example

[C#]
private void ConstructTangentArcTangent()
{
  IConstructCircularArc constructCircularArc=new CircularArcClass();
  ICircularArc circularArc=constructCircularArc as ICircularArc;
  
  IPoint fromPoint=new PointClass();
  fromPoint.PutCoords(100, 100);
  IPoint toPoint=new PointClass();
  toPoint.PutCoords(100, 400);
  ILine line=new LineClass();
  line.PutCoords(fromPoint, toPoint);
  //The angles should be in Radians (Radians=Degrees * PI/180)
  constructCircularArc.ConstructTangentArcTangent(line as ISegment, false, true, 157.08, 100);
   
  String report="Length : " + circularArc.Length + "\n" +
                  "Radius : " + circularArc.Radius + "\n" +
                  "Chord Height : " + circularArc.ChordHeight + "\n" +
                  "Central Angle (Rad) : " + circularArc.CentralAngle + "\n" +
                  "From Angle (Rad) : " + circularArc.FromAngle + "\n" +
                  "To Angle (Rad) : " + circularArc.ToAngle + "\n" +
                  "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;
  System.Windows.Forms.MessageBox.Show(report);
}
[Visual Basic .NET]

    Private Sub ConstructTangentArcTangent()
        Dim pConstructCircularArc As ESRI.ArcGIS.Geometry.IConstructCircularArc
        Dim pCArc As ESRI.ArcGIS.Geometry.ICircularArc
        Dim Pi As Double
        Dim pToPoint As ESRI.ArcGIS.Geometry.IPoint
        Dim pFromPoint As ESRI.ArcGIS.Geometry.IPoint
        Dim pPoint As ESRI.ArcGIS.Geometry.IPoint
        Dim pLine1 As ESRI.ArcGIS.Geometry.ILine

        pConstructCircularArc=New ESRI.ArcGIS.Geometry.CircularArc
        pCArc=pConstructCircularArc
        Pi=4 * Math.Atan(1) 'Calculate the value of pi.
        pFromPoint=New ESRI.ArcGIS.Geometry.Point
        pToPoint=New ESRI.ArcGIS.Geometry.Point
        pLine1=New ESRI.ArcGIS.Geometry.Line
        pFromPoint.PutCoords(100, 100)
        pToPoint.PutCoords(100, 400)
        pLine1.PutCoords(pFromPoint, pToPoint)
        pPoint=New ESRI.ArcGIS.Geometry.Point
        pPoint.PutCoords(200, 400)
        'The angles should be in Radians (Radians=Degrees * PI/180)
        pConstructCircularArc.ConstructTangentArcTangent(pLine1, False, True, 157.08, 100)

        Debug.Print("Length : " & pCArc.Length)
        Debug.Print("Radius : " & pCArc.Radius)
        Debug.Print("Chord Height : " & pCArc.ChordHeight)
        Debug.Print("Central Angle (Rad) : " & pCArc.CentralAngle)
        Debug.Print("From Angle (Rad) : " & pCArc.FromAngle)
        Debug.Print("To Angle (Rad) : " & pCArc.ToAngle)
        Debug.Print("Center Point : " & pCArc.CenterPoint.X & " , " & pCArc.CenterPoint.Y)
        Debug.Print("From Point : " & pCArc.FromPoint.X & " , " & pCArc.FromPoint.Y)
        Debug.Print("To Point : " & pCArc.ToPoint.X & " , " & pCArc.ToPoint.Y)
    End Sub

See Also

IConstructCircularArc Interface | IConstructCircularArc.ConstructTangentAngleTangent Method | IConstructCircularArc.ConstructTangentAngleChord Method | IConstructCircularArc.ConstructTangentArcTangent Method | IConstructCircularArc.ConstructTangentAngleArc Method | IConstructCircularArc.ConstructTangentChordTangent Method | IConstructCircularArc.ConstructTangentRadiusAngle Method | IConstructCircularArc.ConstructTangentRadiusArc Method | IConstructCircularArc.ConstructTangentAndPoint Method | IConstructCircularArc.ConstructTangentRadiusChord Method | IConstructCircularArc.ConstructTangentRadiusTangent Method | IConstructCircularArc.ConstructTangentChordArc Method