Создание треугольных сеток на сфере
Два-три предложения.
Генерация сетки в сферическом треугольнике
В качестве базы для создания сетки используется сферический треугольник, заданный координатами своих вершин.
Метод бисекций
Назовём бисекциями операции деления исходного треугольника на четыре треугольника нового поколения. Собственно термин «бисекция» относится к делению сторон пополам. В середины рёбер вставляются новые вершины (белые точки на рисунках), которые соединяются новыми рёбрами (пунктирные линии), образующими новые треугольники. Следующее поколение получается очередной бисекцией.
В терминах геометрии на сфере задача вставки точек в стороны треугольников решается последовательным решением обратной и прямой геодезических задач. Однако в данном случае гораздо проще использовать векторную алгебру. Пусть концы стороны заданы векторами a и b; тогда середина f вычисляется как их нормированная сумма:
- Невозможно разобрать выражение (SVG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mathbf{f} = \frac{\mathbf{a} + \mathbf{b}}{| \mathbf{a} + \mathbf{b} |}}
Метод трисекций
Исходный треугольник делится на девять треугольников нового поколения. В результате трисекции каждая сторона делится на три равных отрезка, в концы которых вставляются вершины. Итого шесть новых вершин, и седьмая вставляется в геометрический центр треугольника. Вершины соединяются рёбрами, образующими треугольники.
Проще всего вычислить положение центральной точки g:
- Невозможно разобрать выражение (SVG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \mathbf{g} = \frac{\mathbf{a} + \mathbf{b} + \mathbf{c}}{| \mathbf{a} + \mathbf{b} + \mathbf{c} |}}
где a, b и c — векторы вершин исходного треугольника.
Разделить стороны на три равных отрезка сложнее. Простое решение предлагает утилита PROJ.4 geod:
$ geod +a=$earth_radius +lat_1=$lat1 +lon_1=$lon1 +lat_2=$lat2 +lon_2=$lon2 +n_S=3
где параметры lat_1, lon_1, lat_2, lon_2 задают начало и конец линии, а параметр n_S задаёт число отрезков.
Ссылки
- Задачи на сфере: обратная геодезическая задача
- Задачи на сфере: прямая геодезическая задача
- man_geod – PROJ.4


