Может кому понадобится. Если точность в 200 км не принципиальна, то можно применить следующий подход.
Нарисовать сегмент, его разбить на точки и из них сформировать одну из сторон полигона. Код хреновый, но работает быстро.
работает на порядки быстрее, чем построение всяких ортодромий
Код: Выделить всё
IConstructCircularArc constructCircularArcKWEmulator1 = new CircularArc() as IConstructCircularArc;
ICircularArc circularArcKWEmulator1 = constructCircularArcKWEmulator1 as ICircularArc;
constructCircularArcKWEmulator1.ConstructEndPointsAngle(farMap1, nearMap1, true, Math.Abs(s_Info.Azimuth - s_Info.OpeningAngle) * Math.PI / 180.0);
ISegment oneLineOfPolygon = (ISegment)circularArcKWEmulator1 as ISegment;
ILine[] listSegments = new ILine[10];
int myTest = 10;
IGeometryBridge whatIsItXZ = new GeometryEnvironment() as IGeometryBridge;
whatIsItXZ.Densify(oneLineOfPolygon, 0, ref myTest, ref listSegments);
IEnumerator iterator = listSegments.GetEnumerator();
while (iterator.MoveNext())
{
ILine myTestObject = (ILine)iterator.Current;
arrayX.Add(myTestObject.FromPoint.X);
arrayY.Add(myTestObject.FromPoint.Y);
}