Страница 1 из 1
Сформировать полигон из дуги
Добавлено: 18 мар 2013, 13:49
novice
Есть объект типа CircularArc
Код: Выделить всё
IConstructCircularArc constructCircularArcKWEmulator = new CircularArc() as IConstructCircularArc;
ICircularArc circularArcKWEmulator = constructCircularArcKWEmulator as ICircularArc;
constructCircularArcKWEmulator.ConstructEndPointsAngle(farMap, nearMap, true, Math.Abs(s_Info.Azimuth - s_Info.OpeningAngle) * Math.PI / 180.0);
Как из этого объекта получить массив из, например, 200 точек, чтобы впоследствии по ним построить полигон?
Re: Сформировать полигон из дуги
Добавлено: 18 мар 2013, 13:58
novice
Если у кого-то есть пример с Densify, CircularArc и ISegment на с# скиньте его пожалуйста
Re: Сформировать полигон из дуги
Добавлено: 18 мар 2013, 17:52
novice
Может кому понадобится. Если точность в 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);
}