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


IConstructMultipoint.ConstructTangent Method (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > ArcObjects namespaces > Geometry > ESRI.ArcGIS.Geometry > Interfaces > IC > IConstructMultipoint Interface > IConstructMultipoint.ConstructTangent Method
ArcGIS Developer Help

IConstructMultipoint.ConstructTangent Method

Constructs all points of tangency to a curve from a point.

[Visual Basic .NET]
Public Sub ConstructTangent ( _
    ByVal inCurve As ICurve, _
    ByVal p As IPoint _
)
[C#]
public void ConstructTangent (
    ICurve inCurve,
    IPoint p
);
[C++]
HRESULT ConstructTangent(
  ICurve* inCurve,
  IPoint* p
);
[C++]
Parameters
inCurve 

inCurve is a parameter of type ICurve* p
p is a parameter of type IPoint*

Product Availability

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

Description

Creates a Multipoint consisting of all points along the input Segment that are Tangent to the input Point.

Remarks

Input must consist of a single segment and not polycurves.

 

Multipoint Construct Tangent

[C#]

        private void ConstructTangent()
        {
            IPoint[] points = new IPoint[4];
            for (int i = 0; i < 4; i++)
            {
                points[i] = new PointClass();
            }

            points[0].PutCoords(150, 100);
            points[1].PutCoords(200, 600);
            points[2].PutCoords(400, 600);
            points[3].PutCoords(450, 100);

            IBezierCurveGEN bezierCurve = new BezierCurveClass();
            bezierCurve.PutCoords(ref points);
            IConstructMultipoint constructMultipoint = new MultipointClass();
            constructMultipoint.ConstructTangent(bezierCurve as ICurve, points[1]);
            IMultipoint multipoint = constructMultipoint as IMultipoint;
            IPointCollection pointCollection = multipoint as IPointCollection;

            //Report the points

            for (int i = 0; i < pointCollection.PointCount; i++)
            {
                System.Windows.Forms.MessageBox.Show("Point : " + pointCollection.get_Point(i).X + " , " + pointCollection.get_Point(i).Y);
            }
        }

[Visual Basic .NET]

    Private Sub ConstructTangent()
        Dim pTcoll As ESRI.ArcGIS.Geometry.IPointCollection
        Dim pConstructMultipoint As ESRI.ArcGIS.Geometry.IConstructMultipoint
        Dim pMultipoint As ESRI.ArcGIS.Geometry.IMultipoint
        Dim i As Long
        Dim pBezier As ESRI.ArcGIS.Geometry.IBezierCurve
        Dim pPtCon(0 To 3) As ESRI.ArcGIS.Geometry.IPoint
        For i = 0 To 3
            pPtCon(i) = New ESRI.ArcGIS.Geometry.Point
        Next
        pPtCon(0).PutCoords(150, 100)
        pPtCon(1).PutCoords(200, 600)
        pPtCon(2).PutCoords(400, 600)
        pPtCon(3).PutCoords(450, 100)
        pBezier = New ESRI.ArcGIS.Geometry.BezierCurve
        pBezier.PutCoords(4, pPtCon(0))
        pConstructMultipoint = New ESRI.ArcGIS.Geometry.Multipoint
        pConstructMultipoint.ConstructTangent(pBezier, pPtCon(0))
        pMultipoint = pConstructMultipoint
        pTcoll = pMultipoint
        Debug.Print("*********************************************")
        Debug.Print(" Report the points")
        Debug.Print("*********************************************")
        For i = 0 To pTcoll.PointCount - 1
            Debug.Print("Point : " & pTcoll.Point(i).X & " , " & pTcoll.Point(i).Y)
        Next
    End Sub

See Also

IConstructMultipoint Interface