This document is archived and information here might be outdated. Recommended version. |
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,
System.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*
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.
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.
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