Страница 2 из 2

Re: Граница проекции

Добавлено: 13 янв 2021, 13:13
AndreySb
Удалось реализовать, всем спасибо!
ortho.jpeg
ortho.jpeg (19.32 КБ) 322 просмотра
aeqd.jpeg
aeqd.jpeg (28.89 КБ) 322 просмотра
healpix.jpeg
healpix.jpeg (20.59 КБ) 322 просмотра

Re: Граница проекции

Добавлено: 13 янв 2021, 13:16
trir
алгоритм опиши

Re: Граница проекции

Добавлено: 13 янв 2021, 16:16
AndreySb
1.Используем тот факт что когда выбираем точку за границей проекции(т.е. на белом фоне на картинках) то при обратном преобразовании proj4 возвращает inf,inf а при выборе внутри(т.е. на синем фоне) возвращает широту долготу.
2.С помощью рекурсии разбиваем прямоугольник экрана квадродеревом до некоторого уровня без условия а затем бьем только те квадраты у которого есть точки лежащие и внутри и снаружи границы. Все другие квадраты отсекаем. Для любого получившегося квадрата находим 2 точки пересечения его ребер с границей проекции и сохраняем этот отрезок в массив.
3.Аналогичную операцию делаем с каждым ребром прямоугольника экрана если экран охватывает не всю проекцию разом, только там сохраняем в массив не только отрезок которые пересекает границу проекции но и отрезок который двумя точками находится внутри проекции.
4.Отрезки из массива объединяем в цепь пользуясь тем что у двух соседних отрезков в подавляющем большинстве случаем будет одна общая точка. Может быть несколько цепей если разрывы или граница при данной области видимости состоит из двух или более областей. Их можно объединить в один полигон по условию близости концов. Цепь обращаем по часовой стрелке, если необходимо. Применяем к ней lod отправляем на отрисовку или для других полезных целей, например адекватного отсечения полигонов.