This document is archived and information here might be outdated. Recommended version. |
Constructs a point on the bisector of the angle (from, through, to). When useAcuteAngle is false, the sign of distance will select a point right or left of (from, through, to). Otherwise, the sign of distance will select the acute/obtuse point.
[Visual Basic .NET] Public Sub ConstructAngleBisector ( _ ByVal from As IPoint, _ ByVal through As IPoint, _ ByVal to As IPoint, _ ByVal distance As Double, _ ByVal useAcuteAngle As Boolean _ )
[C#] public void ConstructAngleBisector ( IPoint from, IPoint through, IPoint to, double distance, bool useAcuteAngle );
[C++]
HRESULT ConstructAngleBisector(
IPoint* from,
IPoint* through,
IPoint* to,
double distance,
VARIANT_BOOL useAcuteAngle
);
[C++] Parameters from
from is a parameter of type IPoint* through
through is a parameter of type IPoint* to
to is a parameter of type IPoint* distance
distance is a parameter of type double useAcuteAngle
useAcuteAngle is a parameter of type bool
Constructs a Point at specified Distance along the line which bisects the Angle formed by the right side of the three input points. If the right side angle is smaller, the constructed line along which the Point is constructed will always bisect this angle, regardless of the value of bUseSmallerAngle. However, if the right side angle is larger, and bUseSmallerAngle is TRUE, then the Point will be on the line constructed which bisects the smaller angle (left side) instead of the right side angle.
The method uses a vector geometry to calculate the point. The Smaller Angle is the angle less than PI.
If From , To and Through points are all on a straight line , the point is calculated perpendicular (to the right) of the line.
private void ConstructAngleBisector()
{
IPoint fromPoint = new PointClass();
fromPoint.PutCoords(0, 0);
IPoint throughPoint = new PointClass();
throughPoint.PutCoords(10, 0);
IPoint toPoint = new PointClass();
toPoint.PutCoords(0, 10);
IConstructPoint constructionPoint = new PointClass();
constructionPoint.ConstructAngleBisector(fromPoint, throughPoint, toPoint, 10, true);
IPoint outPutPoint = constructionPoint as IPoint;
System.Windows.Forms.MessageBox.Show("Output point : " + outPutPoint.X + " , " + outPutPoint.Y);
}
Public Sub ConstructAngleBisector()
Dim ptTr As ESRI.ArcGIS.Geometry.IPoint
Dim ptTo As ESRI.ArcGIS.Geometry.IPoint
Dim ptFrom As ESRI.ArcGIS.Geometry.IPoint
Dim pConstructLine As ESRI.ArcGIS.Geometry.IConstructLine
Dim pOutPutLine As ESRI.ArcGIS.Geometry.ILine
Dim Pi As Double
Pi = 4 * Math.Atan(1)
ptTr = New ESRI.ArcGIS.Geometry.Point
ptTo = New ESRI.ArcGIS.Geometry.Point
ptFrom = New ESRI.ArcGIS.Geometry.Point
pConstructLine = New ESRI.ArcGIS.Geometry.Line
ptTr.PutCoords(0, 0)
ptTo.PutCoords(0, 10)
ptFrom.PutCoords(10, 0)
pConstructLine.ConstructAngleBisector(ptFrom, ptTr, ptTo, 10, True)
pOutPutLine = pConstructLine 'QI
Debug.Print(pOutPutLine.Length)
'Angle from the XAxis
Debug.Print((180 * pOutPutLine.Angle) / Pi)
End Sub