Як картографувати поверхню кулі плитками, як ви можете боротися з полярними викривленнями?


24

Легко розібратися з тим, як локації взаємодіють на чистій декартовій сітці. Це просто ванільна математика. І ви можете ігнорувати геометрію поверхні сфери для її купки, якщо ви хочете просто обрізати полюси чи щось таке. Але я продовжую придумувати ідеї для ігор, де важливий полярний простір. Геокодовані ARG та глобальні негідники та інше.

Я хочу, щоб квадратні (іш?) Місця розташування - в будь-якому разі добре представлені квадратними плитками однакового розміру в усьому світі.

Це має бути вирішеною проблемою, правда?

Які рішення?

ETA:

На екваторі - і якщо припустити, що ваші квадратні місця досить малі, це досить близько до істини, що ви можете піти, маючи один квадрат у рядах на північ і південь від найбільш екваторіального ряду. І ви могли, мабуть, піти від цього, просто помахавши різницею приблизно 45 градусів. Але врешті-решт, у окружному ряду між стовпами має бути менше квадратів. Якщо я скорочую довжину рядка на одну і зсуваю квадрати на 1/2, то вони подібно до шестигранників, і кодування відносно легко зробити, щоб відслідковувати з'єднання. Але коли ви отримуєте полюс, він стає все більш екстремальним.

Проектування поверхні світу на поверхню куба привабливо. Але я подумав, що вже мають бути більш елегантні рішення.

Якби я робив кубик (не розбираючи його далі геодезією) Чи є плюси і мінуси, пов’язані з розміщенням жердини в центрі обличчя або у вершині трьох сторін?


1
Не могли б ви детальніше пояснити, що ви маєте на увазі під "квадрат (ish)"? Наскільки шквар "квадратний (іш)"?
Стів H

Відповіді:


3

Я думаю, ви шукаєте геодезичну сітку . Багато людей наближають землю кубом:

Більшість картографічних проблем зникне на багатогранному Землі

Карлос А. Фуруті має безліч карт землі, які складаються в куб

Можливо, вас також зацікавить квінктуальна проекція Перса, яка відображає всю Землю на один або два квадрати.

Ікосаедр (карта Dymaxion; "Який найкращий спосіб пікселізувати сферу?" ) Дає дещо менші спотворення, але є складнішими.


9

Мені завжди хотілося побачити гру, де сферична карта використовувала якийсь звичайний багатогранник замість того, щоб грати у світ на торі. Ця методика називається карта Dymaxion . (джерело: grunch.net )alt текст         

Я б порекомендував Ікозаедр . Прокладіть поточний трикутник, щоб він вирівнювався по одному краю квадрата. Коли гравець відсунеться від трикутника, підтягніть наступний трикутник і знову накресліть його. Координати гравця потім будуть переставлені до нового розділу. Таким чином, кожен розділ вашої карти має власну систему координат. Також вам потрібно буде намалювати тло для 3 сусідніх та 9 напівприлеглих секцій. Я не думаю, що користувач не зможе визначити, як це реалізовано, якщо це добре зроблено.

Ось приклад того, як це може працювати.

Звичайно, прочитавши це, ви, мабуть, використаєте класичну карту тору, і я буду чекати, щоб побачити справжній поліедричний всесвіт.


Я не буду використовувати торус. Я міг би використовувати циліндр, як це роблять ігри Civ. Але, враховуючи відсутність блискучих рішень, я серйозно схиляюся до куба. Кубик - багатогранник! :)
clweeks

5

Якщо ви створюєте сферу за допомогою геодезичної основи, полярна зона обробляється нічим не відрізняється від будь-якої іншої області з точки зору відстані між вершинами, що полегшує рівномірне відображення uv.

Більшість додатків для моделювання дозволяють створювати примітивні сфери за допомогою геодезичного дизайну.


Проблема полягає в тому, що ви отримаєте алмази замість квадратів у цьому випадку, і це не те, чого хотів ОП.
Kornel Kisielewicz

Якщо я чогось не пропускаю, це не дає мені регіонів, які легше координувати, картати та пов'язувати ... чи не так?
clweeks

Здається, геодезична як спосіб перейти до мене, я не можу придумати жодних інших варіантів регулярного підрозділу. Якщо вам справді потрібні квадратні регіони, ви, безсумнівно, можете генерувати квадратну область, зосереджену на центрі трикутника, навіть якщо вона перетинається з іншими плитками. Для досить великих сфер (і досить маленьких трикутників) зміщення між квадратними областями та сусідніми гранями трикутника буде незначним. Це повинно зберігати перевагу в можливості описувати локальні (тобто однакові квадратні) взаємодії в одній і тій же системі координат, ні?
MrCranky

Я думаю, що є деякі геодезичні форми, які можуть наблизити квадрати, якщо дійсно це потрібно.
швидкісник

Ви отримуєте алмази замість квадратів, але це має бути досить легко зробити перетворення для його виправлення. Жодних стовпів не гарантовано.
ChrisE

5

Немає способу "зіставити" кулю з квадратами (або прямокутниками) і змусити їх об'єднатись у "загальні" вершини.

Однак, чи було б можливо сформувати "місцевий погляд" на вимогу? Проблемний простір насправді не вказано у питанні, але якби я працював над чимось, де я хотів переглянути місто, але хотів би змогти крутити світ, я міг би тимчасово просто відобразити сітку на "досить плоский" розділ світ. Походження сітки було б там, де знаходився ваш місцевий центр, і нормальне в цій точці відповідає нормалі поверхні планети.

Потім, коли виходить з мережі, на вимогу формується нова.

Це може чи не може працювати для ОП, але для деяких це може бути корисно.


4

Візьміть куб, відстань між вершинами і центром куба дорівнює бажаному радіусу. У вас є сфера, складена з 6 чотирьох.

Тепер на кожному кроці візьміть кожен квадроцикл, розділіть його на 4 і перемістіть нові 5 вершин (одна в центрі, а 4 по краях - попередження, вони СПІЛЬНІ) подалі від центру, щоб їм сподобалось на бажаному радіус.

Ні, цей метод не є ідеальним, але принаймні це більш-менш рівномірний розподіл по сфері.


3
Викривлення насправді є досить серйозним - квадратики посередині обличчя будуть біля квадрата, а ті, що біля кутів, будуть сильно спотворені.
JasonD

@JasonD: Він все одно буде кращий за всі алмази. Запропонуйте рішення, яке менш спотворене, якщо ви хочете подати заявку.
Kornel Kisielewicz

Ну, ви можете досить добре наблизити сферу до геодезичного поділу, але я не впевнений, що бачу, як це мені допомагає.
clweeks

1

З максимумом dymaxion ви отримали шестикутники, розкладені в трикутники на плоскій поверхні, але оскільки карта насправді не плоска, вони є п’ятикутниками. Якщо ви хочете дозволити гравцеві зберігати свою орієнтацію, коли він переходить певні ділянки, вам потрібно буде відокремити карти розташування від того, як вони фактично зберігаються. Для таких речей, як будівлі, ви можете зберегти невелику карту векторів прямокутника, а потім просто виконати жорстку роботу з їх малюванням за будь-якою орієнтацією.

Вам не потрібно завжди робити внутрішній вигляд так, як стався нещодавній землетрус, тому що я думаю, що пересічний гравець навіть не повинен бачити очі на вхід у двері на північний схід, а входити в екран із орієнтованими вхідними дверима через південь і вся будівля на звичайній сітці.

Хоча якщо ви збираєтеся просто зберігати такі будівлі та такі важливі майданчики, тоді ви все-таки зробили всю роботу за схемою футбольного футболу. Кінцевим результатом є те, що ви зберігаєте світ як деякий неквадратичний зразок, а потім примушуєте його до такої сітки, де б не був гравець.

Але є й інша альтернатива - якщо ви не дасте їм все так точно вказувати на сферу, як, якби ви просто дали їм компас низької точності, щоб сказати їм, який із чотирьох ортогональних напрямків був найближчим до Півночі, тоді ви могли б піти просто роблячи обертання на 90 градусів для будь-якого місця гравця. Враховуючи припущенний рівень графіки, це не так, як якщо б вам довелося турбуватися про високу будівлю, що затьмарює якийсь дверний проріз. Поки вони знали, чи знаходяться вони біля полюсів чи ні, вони не повинні занадто засмучуватися, що компас міняється на них, якщо тільки НДК навколо них не казав їм їхати на північний схід або вони намагаються насправді піти на конкретні широти та довготи координати .


1

Ви ставите запитання, яке люди, які роблять карти, задають давно :)

Більшість, безумовно, читайте на Картах Проекти, щоб отримати деякі уявлення та ідеї, які можуть допомогти. Проблема представляти поверхню кулі на / з плоскою 2D площиною - це те, про що люди думали вже давно.

Коротка відповідь - ні, ви не можете цього зробити. Ось чому, дивлячись на карти світу, деякі частини спотворюються, а деякі - ні. Зазвичай це полюси, оскільки більшість карт стосуються неполярних областей.

Як говорилося в інших відповідях, відповідь полягає в тому, щоб або використовувати іншу форму (наприклад, шестикутники або трикутники), або динамічно генерувати свою карту під час руху для поточної точки зору користувача.

Квадратними плитками досить легко керувати, без сумніву, але я не думаю, що створити карту з шестигранною плиткою настільки складно.

Ось старіша стаття від GameDev.net, яка вам може бути корисною. Йдеться про виконання ізометричної та шестикутної плитки на сітці.

http://www.gamedev.net/reference/articles/article747.asp

Гуглінг "плитка з шестигранною картою" дасть вам багато звернень, деякі корисні - ні.


1

Я керую кількома мережевими камерами PTZ від Sony, модель SNC-RX570N, для відстеження рухомих об’єктів у небі та тріангуляції для отримання справжніх треків 3D. Одним із аспектів початкового налаштування є визначення без нагляду "турів", для яких потрібно вибрати шляхові точки. Існує обмежена кількість таких програмованих точок, і я хочу охопити всю півкулю ("небесну сферу") від горизонту до зеніту, не залишаючи прогалин.

Тому я задав собі запитання "Яка мінімальна кількість точок маршрутів, які мені потрібні для повного покриття (відсутність прогалин)?". Я виявив, що я насправді не можу повністю це зрозуміти.

У камери є нескінченна панель (360 градусів) і нахил 0-90 град, тому теоретично можна досягти повного покриття. Дисплей камери, призначений для використання на комп’ютері, має прямокутне співвідношення сторін 4: 3. Жорсткий горизонтальний FOV при 1-кратному масштабі становить 58 град.

Існує два способи представлення проблеми, залежно від того, яку проекцію вибирають: - прямолінійна, як Меркатор, за якою горизонт є "екватором", а зеніт - "полюс", розведений на понад 360 градусів сковороди. - полярний, при цьому горизонт - окружність кола, а зеніт - центр кола.

Я вважаю полярним найпростіший спосіб підійти до проблеми. Я можу вирізати коло в горизонтальні кружечки розміру FOV, і це говорить про те, що мені потрібно 7 точкових точок навколо кола з 58 градусами H-FOV. Все йде нормально. Внутрішній радіус - це просто нахил або V-FOV, який становить 3/4 58 градусів. Поки що добре - я покрив найвіддаленіші частини кола.

Але це стає складніше, коли ми наближаємося до зеніту. Я припускаю, що одна з моїх точок маршруту знаходиться саме в зеніті. Як відобразити прямокутник зору на область навколо центру кола? Це форма прямокутника, еліпса, пінцета чи що? Як мені заповнити середній шматочок між приємним зовнішнім покриттям та цією дивною формою в зеніті? Флюмокс.

Зауважу, що суцільний кут півсфери - 2 * PI-стерадіани, а мій FOV при 1х зумі - 0,762-й, це означає, що мені потрібно мінімум 9 тесселяцій. Я підозрюю, що відповідь вище 9.


Як щодо цього .. Коло має площу PI ^ 2 rad ^ 2, а прямокутники FOV - площа 0,75 рад ^ 2. Тож наївно нам потрібно 13,16 балів, які повинні бути округлені для повного покриття до 14 балів. Питання зараз - як їх розмістити?
Андрій

0

Якщо ви хочете зробити всесвітню сітку, я пропоную вам розділити планету на країни чи континенти та зробити квадратну сітку належним чином по центру. Нехай океан покриває шви.


Власне, моє запитання: «оскільки я, очевидно, не можу зробити те, що ти думав, що я насправді запитую, що я можу зробити замість цього?».
clweeks

Дуже добре, редагували тоді.
zaratustra

Так, я, мабуть, зіткнувся з іншою частиною. Я думав про те, щоб реалізувати Dymaxion Map Fuller, але робота з трикутними плитками здавалася такою ж частиною, як кластерF *, як проблема, пов'язана з полярними плитками, з якої я починаю. Отже, з вашої пропозиції, якщо хтось пливе з Північної Америки до Північної Азії, а координати мають значення (можливо, вони можуть встановити плаваючі бази чи щось таке), як я зшити шви разом? Просто придумайте таблицю з'єднань типу NA: A5 -> A: Z475?
clweeks

Я вважаю. Хоча, якщо їм це вдасться зробити, я б просто дав їм бонусну винагороду і відклав їх від мережі, поки вони кудись не підуть.
zaratustra
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.