Помогите исправить алгоритм
Добавлено: 17 июн 2013, 18:16
На вход поступает сектор, у которого есть: центр координат - ТОЧКА(это откуда два луча вылазят), внутренний и внешний радиусы(INNER_R и TOTAL_R), угол больший(OPENING) и угол меньший(AZI).
Этот сектор вначале формируется по этим данным. А затем рисуется на карте(средствами от ESRI). Алгоритм построения дебильный, на шарпе:
1. Находим расстояние в пикселях между точкой центра(ТОЧКА) и точкой на расстоянии радиуса(INNER_R): в течении 20 строк *кода вычисляем радиус rad в ПИКСЕЛЯХ.
2. Находим расстояние в пикселях между точкой центра(ТОЧКА) и точкой на расстоянии внешнего радиуса(INNER_R): в течении 20 строк *кода вычисляем радиус radinn в ПИКСЕЛЯХ.
3. Преобразуем координаты центра(ТОЧКА) в пиксельные(IPoint CentrePointScreen) на экране.
4. Нормализуем данные, преобразуем углы в радианы.
5. Находим КООРДИНАТЫ в пикселях - первая точка сектора на расстоянии радиуса и первым углом.
вторая точка сектора на расстоянии радиуса и вторым углом.
6. Переводим все экранные координаты точек в координаты карты. По ним рисуем фигуру.
Т.е. механизм такой вот тригонометрический: вначале все преобразовываем в пиксельные данные, че-то делаем и преобразовываем результат в координаты карты.
Я бы забил на этот *код, есди бы он работал правильно. Но вот беда: рисуется какая-то фигня. Если изначально зазумировать карту поближе, то рисуется тоже фигня, но уже больше похожая на правду.
Мне заявили, что алгоритм хороший, а просто криворукие программисты ESRI накосячили в функциях рисования на карте. В таком случае есть очень плохой, ненадежный и тормознутый способ исправления этой проблемы.
Поближе зумировать карту(на размер самого маленького полигона). А затем применять этот чудесный алгоритм и рисовать на карте(причем не факт что это исправление проблемы)
Но я думаю, что криворукий кто-то другой. Подскажите, пожалуйста, как исправить этот алгоритм(возможно ли это в принципе), чтобы фигуры рисовались правильно.
Этот сектор вначале формируется по этим данным. А затем рисуется на карте(средствами от ESRI). Алгоритм построения дебильный, на шарпе:
1. Находим расстояние в пикселях между точкой центра(ТОЧКА) и точкой на расстоянии радиуса(INNER_R): в течении 20 строк *кода вычисляем радиус rad в ПИКСЕЛЯХ.
2. Находим расстояние в пикселях между точкой центра(ТОЧКА) и точкой на расстоянии внешнего радиуса(INNER_R): в течении 20 строк *кода вычисляем радиус radinn в ПИКСЕЛЯХ.
3. Преобразуем координаты центра(ТОЧКА) в пиксельные(IPoint CentrePointScreen) на экране.
4. Нормализуем данные, преобразуем углы в радианы.
5. Находим КООРДИНАТЫ в пикселях - первая точка сектора на расстоянии радиуса и первым углом.
вторая точка сектора на расстоянии радиуса и вторым углом.
6. Переводим все экранные координаты точек в координаты карты. По ним рисуем фигуру.
Т.е. механизм такой вот тригонометрический: вначале все преобразовываем в пиксельные данные, че-то делаем и преобразовываем результат в координаты карты.
Я бы забил на этот *код, есди бы он работал правильно. Но вот беда: рисуется какая-то фигня. Если изначально зазумировать карту поближе, то рисуется тоже фигня, но уже больше похожая на правду.
Мне заявили, что алгоритм хороший, а просто криворукие программисты ESRI накосячили в функциях рисования на карте. В таком случае есть очень плохой, ненадежный и тормознутый способ исправления этой проблемы.
Поближе зумировать карту(на размер самого маленького полигона). А затем применять этот чудесный алгоритм и рисовать на карте(причем не факт что это исправление проблемы)
Но я думаю, что криворукий кто-то другой. Подскажите, пожалуйста, как исправить этот алгоритм(возможно ли это в принципе), чтобы фигуры рисовались правильно.