Создание треугольных сеток на сфере
- Игорь Белов
- Гуру
- Сообщения: 2235
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1507
- Откуда: Казань
Создание треугольных сеток на сфере
Хотел написать заметку, получилась статья. Возможно, это совсем не то, что нужно. Прошу посмотреть и высказаться.
====
P. S. от 07.06.2014
Статья опубликована.
====
P. S. от 07.06.2014
Статья опубликована.
Последний раз редактировалось Игорь Белов 17 июн 2014, 21:49, всего редактировалось 1 раз.
The purpose of computing is insight, not numbers
-
- Гуру
- Сообщения: 4208
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание треугольных сеток на сфере
Спасибо за статью!
У меня она вызвала интерес, т.к. я как раз сам задумался о создании покрытия из близких по форме и площади фигур. Позволю высказать свои замечания, скорее вопросы, т.к. я не все понял:
1. статья посвящена построению сетки равносторонних (или близких к ним) или разделению уже существующего треугольника?
2. в тексте есть несколько оценок "не правильности" или "не тождественности" получаемых фигур. хотелось бы понять масштабы этой неоднородности или увидеть ссылку на документ, где это расшифровывается.
3. если можно:
- то в координатах "икосаэдра" укажите дробную (или иррациональную) функцию, которая образует дробь, т.к. разные программы имеют различную внутреннюю точность расчетов.
- для фразы
4.
5.
6. пример в самом конце дан в SHP файлах , хотя по тексту ожидаешь его в MIF/MID, - это критично, потому как MIF можно посмотреть "глазами", что бы оценить что получилось, а SHP уже требует наличия ГИС.
7. не понял как физически получен результат icos4.zip. В том плане, что лично мне интересно получить покрытие из близких к равностороннему схожих по размеру треугольников, которые бы можно было считать плоскими на земной поверхности (для себя я бы определил из как вписанные к круг радиуса 20 км или имеющих грань меньше (20000*cos (π/6)).
Еще раз спасибо за статью.
У меня она вызвала интерес, т.к. я как раз сам задумался о создании покрытия из близких по форме и площади фигур. Позволю высказать свои замечания, скорее вопросы, т.к. я не все понял:
1. статья посвящена построению сетки равносторонних (или близких к ним) или разделению уже существующего треугольника?
2. в тексте есть несколько оценок "не правильности" или "не тождественности" получаемых фигур. хотелось бы понять масштабы этой неоднородности или увидеть ссылку на документ, где это расшифровывается.
3. если можно:
- то в координатах "икосаэдра" укажите дробную (или иррациональную) функцию, которая образует дробь, т.к. разные программы имеют различную внутреннюю точность расчетов.
- для фразы
расшифруйте, что именно это означает, и какие последствия дает.Внутренний угол треугольников, сходящихся в вершине икосаэдра, равен 72° при эталонном 60°.
4.
Если я понял правильно статью, то эту проблему вы предлагаете решить построением сетки на 4-х треугольниках, а при "размножении" результатов использовать ПО, которое учтет эту проблему?Можно собрать тройки соседних вершин и на каждом треугольнике программой triangulate построить сетку. Однако с частью граней возникает проблема разрыва, поскольку выходные долготы находятся в диапазоне от −180° до +180°.
5.
- поскольку в тексте всплывает отсылка к Mapinfo, то данное определение неточно. В Mapinfo определение "CoordSys Earth Projection 1, 0" означает "внутренняя система координат Mapinfo, выражаемая в градусах, которая начиная с версии 4.5 совпадает с WGS84".В качестве координатной системы указана «долгота/широта неопределённая»: "CoordSys Earth Projection 1, 0"
6. пример в самом конце дан в SHP файлах , хотя по тексту ожидаешь его в MIF/MID, - это критично, потому как MIF можно посмотреть "глазами", что бы оценить что получилось, а SHP уже требует наличия ГИС.
7. не понял как физически получен результат icos4.zip. В том плане, что лично мне интересно получить покрытие из близких к равностороннему схожих по размеру треугольников, которые бы можно было считать плоскими на земной поверхности (для себя я бы определил из как вписанные к круг радиуса 20 км или имеющих грань меньше (20000*cos (π/6)).
Еще раз спасибо за статью.
- Игорь Белов
- Гуру
- Сообщения: 2235
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1507
- Откуда: Казань
Re: Создание треугольных сеток на сфере
Борис, спасибо за внимание к этой заметке. Постараюсь ответить на Ваши вопросы, извините за задержку.
Думаю, эта школьная информация будет лишней в статейке.
А результаты получены из MIF'ов в процессе ручной сборки в QGIS, потому и в формате SHP.
Разделению существующего. Предполагается расположить базовые треугольники такие, какие нам нравятся, так, как нам нравится, и затем раздробить их на мелкие.Boris писал(а):1. статья посвящена построению сетки равносторонних (или близких к ним) или разделению уже существующего треугольника?
На самом деле оценка одна. В постановку задачи я добавил сноску: «Эталон - равносторонний треугольник, в котором, как следствие, равны углы. Количественной мерой близости к эталону может быть, например, отношение синусов длин короткой и длинной сторон. Оно же равно отношению синусов наименьшего и наибольшего углов.»Boris писал(а):2. в тексте есть несколько оценок "не правильности" или "не тождественности" получаемых фигур. хотелось бы понять масштабы этой неоднородности или увидеть ссылку на документ, где это расшифровывается.
Немного сферической тригонометрии, и вот формула для длины a ребра сферического икосаэдра:Boris писал(а):3a. в координатах "икосаэдра" укажите дробную (или иррациональную) функцию, которая образует дробь, т.к. разные программы имеют различную внутреннюю точность расчетов.
Если две вершины совместить с полюсами, широты остальных будутcos a/2 = cos 60° / sin 36° = sqrt((5 + sqrt(5)) / 10)
SpeedCrunch рисует для широт такие цифры:φ = ±(90° − a)
Код: Выделить всё
90-degrees(acos(cos(radians(60))/sin(radians(36))))*2
26.56505117707798935157219372045329467120421429964522
90-degrees(acos(sqrt((5+sqrt(5))/10)))*2
26.56505117707798935157219372045329467120421429964522
Ну, это просто факт, связанный со вопросом №2 об искажениях. Возможно, следует для сравнения привести значения угла при вершине 90° для октаэдра и 120° для тетраэдра. Но лучше, думаю, просто удалить эту фразу. Что скажете?Boris писал(а):3b. для фразы «Внутренний угол треугольников, сходящихся в вершине икосаэдра, равен 72° при эталонном 60°.» расшифруйте, что именно это означает, и какие последствия дает.
Именно так.Boris писал(а):4. «Можно собрать тройки соседних вершин и на каждом треугольнике программой triangulate построить сетку. Однако с частью граней возникает проблема разрыва, поскольку выходные долготы находятся в диапазоне от −180° до +180°.» Если я понял правильно статью, то эту проблему вы предлагаете решить построением сетки на 4-х треугольниках, а при "размножении" результатов использовать ПО, которое учтет эту проблему?
Спасибо за ценное замечание, поправил текст.Boris писал(а):5. «В качестве координатной системы указана «долгота/широта неопределённая»: "CoordSys Earth Projection 1, 0"» - поскольку в тексте всплывает отсылка к Mapinfo, то данное определение неточно. В Mapinfo определение "CoordSys Earth Projection 1, 0" означает "внутренняя система координат Mapinfo, выражаемая в градусах, которая начиная с версии 4.5 совпадает с WGS84".
MIF/MID генерировались программами triangulate и shiftxy. Действительно ли примеры выходых файлов нужны в дополнение к длинным листингам? Лично мне было бы интереснее скомпилировать коды и щупать собственноручно сгенерированные MIF'ы.Boris писал(а):6. пример в самом конце дан в SHP файлах , хотя по тексту ожидаешь его в MIF/MID, - это критично, потому как MIF можно посмотреть "глазами", что бы оценить что получилось, а SHP уже требует наличия ГИС.
7. не понял как физически получен результат icos4.zip.
А результаты получены из MIF'ов в процессе ручной сборки в QGIS, потому и в формате SHP.
Утилита разбивки базового треугольника triangulate с ходу выделяет уйму памяти под вершины, рёбра и фасетки. Может быстро упереться в ограничение системы. С Вашими цифрам, вроде, должно получиться. Иначе придётся решать задачу несколько сложнее.Boris писал(а):лично мне интересно получить покрытие из близких к равностороннему схожих по размеру треугольников, которые бы можно было считать плоскими на земной поверхности (для себя я бы определил из как вписанные к круг радиуса 20 км или имеющих грань меньше (20000*cos (π/6)).
The purpose of computing is insight, not numbers
-
- Гуру
- Сообщения: 4208
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание треугольных сеток на сфере
Спасибо за разъяснения и за статью.
3а: формулы с косинусами вполне достаточно
3b: да, стоит удалить.
3а: формулы с косинусами вполне достаточно
3b: да, стоит удалить.
- Игорь Белов
- Гуру
- Сообщения: 2235
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1507
- Откуда: Казань
Re: Создание треугольных сеток на сфере
Сделано, формула добавлена, предложение удалено. Спасибо!Boris писал(а):3а: формулы с косинусами вполне достаточно
3b: да, стоит удалить.
The purpose of computing is insight, not numbers
- tsatsara
- Интересующийся
- Сообщения: 41
- Зарегистрирован: 30 авг 2011, 12:22
- Репутация: 5
- Откуда: СПб
Re: Создание треугольных сеток на сфере
Добрый день!
Спасибо за статью.
Разъясните, пожалуйста, как получаются искажения?
(В тексте статьи и комментариев: не правильность, не тождественность фигур, отношение синусов итд)
Верно ли, что:
Точно не указать широту граней икосаэдра - 26,5... ( float ) и треугольник получается не равносторонний, а от проведения многократных математических операций ошибка растет?
Возможно ли уменьшить ошибку?
Спасибо за статью.
Разъясните, пожалуйста, как получаются искажения?
(В тексте статьи и комментариев: не правильность, не тождественность фигур, отношение синусов итд)
Верно ли, что:
Точно не указать широту граней икосаэдра - 26,5... ( float ) и треугольник получается не равносторонний, а от проведения многократных математических операций ошибка растет?
Возможно ли уменьшить ошибку?
- Игорь Белов
- Гуру
- Сообщения: 2235
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1507
- Откуда: Казань
Re: Создание треугольных сеток на сфере
Добрый день! Попробую ответить кратко. Если я неправильно что-то понял, уточняйте вопросы.
А о накоплении ошибок при многократной бисекции я бы не беспокоился.
В центре грани икосаэдра искажения нулевые, в углах максимальные. В каждой вершине икосаэдра сходятся пять рёбер под углами 360° / 5 = 72°. Значит, угол бесконечно малого треугольника при этой вершине равен 72°, другие два по 54°. Соотношение длины бедра к основанию получается около 0,85.Разъясните, пожалуйста, как получаются искажения?
Необходимость использования тригонометрических функций заставляет выражать широту и долготу в радианах, так что числа, представляющие географические координаты, не только иррациональны, но и трансцендентны. Обычные компьютерные вычисления ограничены погрешностью машинного представления действительных чисел. Тем не менее, результаты можно получить с любой точностью, используя символьные вычисления и длинную арифметику.Верно ли, что:
Точно не указать широту граней икосаэдра - 26,5... ( float ) и треугольник получается не равносторонний, от проведения многократных математических операций ошибка растет?
А о накоплении ошибок при многократной бисекции я бы не беспокоился.
Если этот вопрос связан с предыдущим, ответ положительный, если же с первым, — отрицательный.Возможно ли уменьшить ошибку?
The purpose of computing is insight, not numbers
- tsatsara
- Интересующийся
- Сообщения: 41
- Зарегистрирован: 30 авг 2011, 12:22
- Репутация: 5
- Откуда: СПб
Re: Создание треугольных сеток на сфере
Таким образом, причина искажения - не накопление ошибки (точность вычислений),
а наличие сферического избытка (эксцесса).
а наличие сферического избытка (эксцесса).
- tsatsara
- Интересующийся
- Сообщения: 41
- Зарегистрирован: 30 авг 2011, 12:22
- Репутация: 5
- Откуда: СПб
Re: Создание треугольных сеток на сфере
нет, нет, ошибка из-за того, что шесть равносторонних треугольников не разместить вокруг пяти сторон пятиугольника, если только не сделать их равнобедренными!
- Игорь Белов
- Гуру
- Сообщения: 2235
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1507
- Откуда: Казань
Re: Создание треугольных сеток на сфере
Верно.
Это о том же, только другими словами. Бесконечно малые равносторонние треугольники укладываются вокруг общей вершины вшестером, как на плоскости. Если же размер треугольников одна двадцатая от площади сферы, они помещаются впятером, поскольку сферический избыток раздул углы до 72 градусов.
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость