ArcObjects Library Reference (Geometry)  

IConstructPoint.ConstructAngleDistance Method

Constructs a point at a specified angle (in radians) from the horizontal axis and a specified distance away from the input point.

[Visual Basic .NET]
Public Sub ConstructAngleDistance ( _
    ByVal p As IPoint, _
    ByVal inAngle As Double, _
    ByVal distance As Double _
)
[C#]
public void ConstructAngleDistance (
    IPoint p,
    double inAngle,
    double distance
);
[C++]
HRESULT ConstructAngleDistance(
  IPoint* p,
  double inAngle,
  double distance
);
[C++]

Parameters

p

  p is a parameter of type IPoint

inAngle   inAngle is a parameter of type double distance   distance is a parameter of type double

Product Availability

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

Description

The ConstructAngleDistance method, given a point (p), construct another point at an angle (inangle) and a distance(distance).

Remarks

Angle in radians and distance in map units. The angle is measured counter-clockwise from the horizontal line and can be negative. If the distance is negative then the opposite direction is assumed (same as angle + PI). 

[C#]

        // select a point in ArcMap and calculate a new point with the
        // angle of 45 degrees and distance on 250 map units.
        public void ConstructAngleDistance()
        {
            IMxDocument mxDocument = m_application.Document as IMxDocument;
            IMap map = mxDocument.FocusMap;
            ISelection featureSelection = map.FeatureSelection;
            IEnumFeature featureEnumerator = featureSelection as IEnumFeature;
            featureEnumerator.Reset();
            IFeature currentFeature = featureEnumerator.Next();
            double distance = 250;
            double angle = 45;
            while (currentFeature != null)
            {
                if (currentFeature.Shape.GeometryType == esriGeometryType.esriGeometryPoint)
                {
                    IPoint startPoint = currentFeature.Shape as IPoint;
                    System.Windows.Forms.MessageBox.Show("Start Point: " + startPoint.X + ", " + startPoint.Y + "\n" +
                               "Angle: " + angle + "\n" + "Distance: " + distance);
                    IPoint point = _ConstructAngleDistance(startPoint, angle, distance);
                    System.Windows.Forms.MessageBox.Show("x,y = " + point.X + "," + point.Y);

                }
                currentFeature = featureEnumerator.Next();
            }
        }

        private IPoint _ConstructAngleDistance(IPoint point, double angle, double distance)
        {
            //Convert the angle degrees to radians
            double angleRad = angle * 2 * Math.PI / 360;
            IConstructPoint construcionPoint = new PointClass();
            construcionPoint.ConstructAngleDistance(point, angleRad, distance);
            return construcionPoint as IPoint;
        }

[Visual Basic .NET]

    '+++ select a point in ArcMap and calculate a new point with the
    '+++ angle of 45 degrees and distance on 100 map units.

    Public Sub t_ConstructAngleDistance(ByRef pMXDoc As ESRI.ArcGIS.ArcMapUI.IMxDocument)
        On Error GoTo Errorhandler
        Dim pEnumFeat As ESRI.ArcGIS.Geodatabase.IEnumFeature
        Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature
        Dim pSelection As ESRI.ArcGIS.Carto.ISelection
        Dim pMap As ESRI.ArcGIS.Carto.IMap
        Dim pPoint As ESRI.ArcGIS.Geometry.IPoint
        Dim pStart As ESRI.ArcGIS.Geometry.IPoint
        Dim dDist As Long
        Dim dAngle As Long

        pMap = pMXDoc.FocusMap

        pSelection = pMap.FeatureSelection
        pEnumFeat = pSelection

        pEnumFeat.Reset()
        pFeature = pEnumFeat.Next

        dDist = 250
        dAngle = 45

        While Not pFeature Is Nothing
            If pFeature.Shape.GeometryType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint Then
                pStart = pFeature.Shape
                Debug.Print(1, "Start Point:" & pStart.X & "," & pStart.Y & vbCrLf & _
                   "Angle:" & dAngle & vbCrLf & "Distance:" & dDist)

                pPoint = PtConstructAngleDistance(pStart, dAngle, dDist)
                Debug.Print(1, "x,y = " & pPoint.X & "," & pPoint.Y & vbCrLf)

            End If
            pFeature = pEnumFeat.Next
        End While
        Exit Sub

Errorhandler:
        MsgBox(Err.Number & "..." & Err.Description)
        Exit Sub

    End Sub

    Public Function PtConstructAngleDistance(ByVal pPoint As ESRI.ArcGIS.Geometry.IPoint, ByVal dAngle As Long, ByVal dDist As Long) As ESRI.ArcGIS.Geometry.IPoint
        Const PI = 3.14159265358979
        Dim dAngleRad As Double
        Dim pCPoint As ESRI.ArcGIS.Geometry.IConstructPoint
        pCPoint = New ESRI.ArcGIS.Geometry.Point

        dAngleRad = dAngle * 2 * PI / 360 'Convert the angle degrees to radians

        pCPoint.ConstructAngleDistance(pPoint, dAngleRad, dDist)
        PtConstructAngleDistance = pCPoint
    End Function

See Also

IConstructPoint Interface | IConstructPoint.ConstructAlong Method