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
point1point1 is a parameter of type IPoint
angleP1P2 angleP1P2 is a parameter of type double point2point2 is a parameter of type IPoint
angleP2P3 angleP2P3 is a parameter of type double point3point3 is a parameter of type IPoint
arcAngle [out] arcAngle is a parameter of type double
Product Availability
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.
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