ArcObjects Library Reference (Geometry)  

IConstructPoint.ConstructThreePointResection Method

Constructs the point of observation from which two signed angles between three points were measured; returns an angle which can help establish the confidence of the observation location: A small angle indicates greater uncertainty in the location.

[Visual Basic .NET]
Public Sub ConstructThreePointResection ( _
    ByVal point1 As IPoint, _
    ByVal angleP1P2 As Double, _
    ByVal point2 As IPoint, _
    ByVal angleP2P3 As Double, _
    ByVal point3 As IPoint, _
    ByRef arcAngle As Double _
)
[C#]
public void ConstructThreePointResection (
    IPoint point1,
    double angleP1P2,
    IPoint point2,
    double angleP2P3,
    IPoint point3,
    ref double arcAngle
);
[C++]
HRESULT ConstructThreePointResection(
  IPoint* point1,
  double angleP1P2,
  IPoint* point2,
  double angleP2P3,
  IPoint* point3,
  double* arcAngle
);
[C++]

Parameters

point1

  point1 is a parameter of type IPoint

angleP1P2   angleP1P2 is a parameter of type double point2

  point2 is a parameter of type IPoint

angleP2P3   angleP2P3 is a parameter of type double point3

  point3 is a parameter of type IPoint

arcAngle [out]   arcAngle is a parameter of type double

Product Availability

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

Description

The ConstructThreePointResection method constructs a new point given three points and two signed view angles. It finds the viewpoints from which the two point pairs are viewed at the given angles. When both angles are equal to pi/2 radians, there is only one solution; otherwise there can be up to four solutions. A positive angle indicates that the viewpoint is to be on the right hand side of the line between the corresponding points; a negative angle places the resulting point on the left. There may not be a feasible solution for the given input, in which case the resulting point is empty. The quality of the solution is given by the arcAngle parameter. The smaller the angle the less stable the solution. The returned angle is between 0 and pi/2.

Remarks

Given three points and two angles measured from the constructed point.



Note that there is no unique solution if all three points are on the same circle.

[Visual Basic .NET]

Private Shared Sub t_ConstructThreePointResection()

     On Error GoTo Errorhandler

     Dim pPoint As IPoint

     Dim pCPoint As IConstructPoint

     Dim pPoint1 As IPoint

     Dim pPoint2 As IPoint

     Dim pPoint3 As IPoint

     Dim dAngle1 As Double

     Dim dAngle2 As Double

 

     pCPoint = New Point

     pPoint = New Point

     pPoint1 = New Point

     pPoint2 = New Point

     pPoint3 = New Point

 

     pPoint1.PutCoords(0, 1)

     pPoint2.PutCoords(2, 2)

     pPoint3.PutCoords(1, 0)

 

     dAngle1 = Math.PI / 4

     dAngle2 = Math.PI / 4

 

     pCPoint.ConstructThreePointResection(pPoint1, dAngle1, pPoint2, dAngle2, pPoint3, Math.PI / 2)

     pPoint = pCPoint

 

     MsgBox("x,y = " & pPoint.X & "," & pPoint.Y)

     Exit Sub

Errorhandler:

     MsgBox(Err.Number & "..." & Err.Description)

     Exit Sub

End Sub

See Also

IConstructPoint Interface