Bir kürenin yüzeyini çinilerle eşlerken kutupsal bozulma ile nasıl başa çıkabilirsiniz?


24

Konumların temiz bir Kartezyen ızgara üzerinde etkileşime girme şekliyle başa çıkmak kolaydır. Sadece vanilya matematiği. Ve eğer kutupları ya da başka bir şeyi kesmek istiyorsanız, küre yüzeyinin geometrisini bir demet için görmezden gelebilirsiniz. Ancak kutupsal alanın önemli olduğu oyunlar için fikirler üretmeye devam ediyorum. Coğrafi kodlanmış ARG'ler ve küresel roguelikes ve benzeri şeyler.

Kare (ish?) Yerler istiyorum - yine de, aynı boyuttaki kare kiremitlerle makul şekilde temsil edilebilir.

Bu çözülmüş bir problem olmalı, değil mi?

Çözümler nelerdir?

ETA:

Ekvator'da - ve kare konumlarınızın oldukça küçük olduğunu farz edersek, en ekvator sırasının kuzeyindeki ve güneyindeki sıralarda bir kareye sahip olabileceğiniz gerçeğine yakındır. Muhtemelen, farkı elle 45 dereceye kadar elle sallayarak muhtemelen bundan kurtulabilirsiniz. Ancak nihayetinde, bir direk koğuşunda çevresel sırada daha az kare olması gerekir. Eğer sıranın uzunluğunu bir kısaltırsam ve kareleri 1/2 oranında kaydırırsam, o zaman onlar sadece altıgenler gibidir ve bağlantıları takip etmek için kodlamayı yapmak oldukça kolaydır. Fakat bir direğe yaklaştıkça gittikçe daha aşırı hale geliyor.

Dünyanın yüzeyini bir küpün yüzeyine yansıtmak caziptir. Ancak zaten kullanımda olan daha zarif çözümler olması gerektiğini düşündüm.

Küp işini yaparsam (jeodezi yoluyla daha fazla parçalara ayırmazsam) Direği yüzün ortasına veya üç tarafın tepe noktasına yerleştirmekle ilgili herhangi bir artı ve eksileri var mı?


1
"Kare (ish)" ile ne demek istediğinizi açıklayabilir misiniz? Kare (ish) ne kadar squarish?
Steve H

Yanıtlar:



9

Her zaman küresel haritanın dünyayı torusla oynamak yerine, bir tür normal polihedron kullandığı bir oyun görmek istemişimdir. Bu tekniğe Dymaxion haritası denir . (kaynak: grunch.net )alt metin         

Bir Icosahedron tavsiye ederim . Geçerli üçgeni bir karenin bir kenarı ile aynı hizaya getirin. Oynatıcı üçgenden ayrıldığında, bir sonraki üçgeni yukarı çekin ve tekrar aynı şekilde eşleyin. Oyuncunun koordinatları daha sonra yeni bölüme gönderilir. Böylece haritanızın her bir bölümünün kendi koordinat sistemi vardır. Ayrıca 3 bitişik ve 9 yarı bitişik bölüm için arka plan çizmeniz gerekir. Kullanıcının iyi yapıldığında nasıl uygulandığını belirleyebileceğini sanmıyorum.

İşte bunun nasıl işe yarayabileceğine bir örnek.

Elbette bunu okuduktan sonra muhtemelen klasik torus haritasını kullanacaksınız ve gerçek bir çokyüzlü evren görmeyi bekliyorum.


Torus kullanmayacağım. Civ oyunları gibi bir silindir kullanabilirim. Ancak, mükemmel çözümler bulunmadığı için, bir küpü ciddiye yasliyorum. Bir küp bir çokyüzlülüktür! :)
Ağustos'ta

5

Bir jeodezik taban kullanarak bir küre yaratırsanız, kutupsal alan, tekdüzey uv haritalamayı kolaylaştıran verteks aralığı açısından diğer hiçbir bölgeden farklı değildir.

Çoğu modelleme uygulaması, jeodezik bir tasarım kullanarak ilkel bir alan yaratmanıza izin verir.


Sorun şu ki bu durumda kareler yerine elmaslar alacaksınız ve OP'nin istediği bu değil.
Kornel Kisielewicz

Bir şeyi kaçırmazsam, bu bana koordinasyon, haritalama ve bağlantı daha kolay olan bölgeleri vermiyor.
34'te clweeks

Jeodezik bana gitmenin yolu gibi görünüyor, düzenli alt bölümleme için başka seçenek düşünemiyorum. Gerçekten kare bölgelere ihtiyacınız varsa, kesinlikle diğer çinilerle üst üste binmesine rağmen üçgen merkezde merkezlenmiş bir kare bölge oluşturabilirsiniz. Yeterince geniş küreler (ve yeterince küçük üçgenler) için, kare bölgeler ile bitişik üçgen yüzleri arasındaki uzaklık ihmal edilebilir. Aynı koordinat sistemindeki yerel (yani aynı kare) etkileşimleri tanımlayabilme avantajını korumalıdır, değil mi?
MrCranky,

GERÇEKTEN ihtiyaç duyulursa yaklaşık kareler verebilecek bazı jeodezik şekiller olduğunu düşünüyorum.
hız

Kare yerine elmas alırsınız, ancak düzeltmek için bir dönüşüm yapmak oldukça kolaydır. Hiçbir kutup garanti edilmez.
Chris

5

Kareleri (veya dikdörtgenleri) olan bir küreyi "eşlemenin" ve hepsinin "ortak" köşelerde birleşmelerinin bir yolu yoktur.

Bununla birlikte, talep üzerine “yerel görüş” oluşturmak uygun olur mu? Sorun alanı soruda tam olarak belirtilmemiştir, ancak şehir manzarasını istediğim ancak dünyayı döndürmek istediğim bir şey üzerinde çalışıyor olsaydım, geçici olarak yalnızca "yeterince düz" bir bölüme bir ızgara eşleyebilirdim. Dünya. Şebekenin menşei, yerel merkezinizin olduğu her yerde olacaktır ve bu noktada normal olan, gezegenin yüzeyinin normaliyle eşleşir.

Daha sonra, biri şebekeden uzaklaştığında, talep üzerine yeni bir tane üretilir.

Bu OP için işe yarayabilir ya da çalışmayabilir, ancak bazıları için faydalı olabilir.


4

Köşeler ve küpün merkezi arasındaki mesafe istenen yarıçapa eşit olacak şekilde bir küp alın. 6 dörtlükten oluşan bir küreniz var.

Şimdi, her adımda, her dörtlüyü alın, 4'e bölün ve yeni 5 köşeyi (merkezde bir ve kenarlarda 4 - uyarı, bunlar PAYLAŞILIR) merkezden uzağa istediğiniz şekilde sevmelerini sağlayın yarıçapı.

Hayır, bu yöntem mükemmel değil, ama en azından küre üzerinde eşit eşit bir dağılım var.


3
Bu çarpıtma aslında oldukça şiddetlidir - yüzün ortasındaki dörtgenler kareye yakın olacak ve köşelere yakın olanlar kötü şekilde çarpıtılacak.
JasonD,

@ JasonD: Hala tüm elmaslardan daha iyi olacak. Oy vermeyi reddetmek istiyorsanız, daha az çarpık bir çözüm önerin.
Kornel Kisielewicz

Jeodezik bölünme ile bir küreyi çok güzel bir şekilde tahmin edebilirsiniz, ancak bunun bana nasıl yardımcı olduğunu bildiğimden emin değilim.
32'de clweeks

1

Dymaxion max ile altıgenler düz bir yüzeye üçgenler halinde yerleştirilmiş ancak harita gerçekten düz olmadığı için beşgenler. Müzikçaların belirli bölümlerden geçerken yönlerini korumalarına izin vermek istiyorsanız, konum haritalarını gerçekte saklandıkları konumdan ayırmanız gerekir. Binalar gibi şeyler için küçük bir dikdörtgen vektör haritası saklayabilir ve daha sonra ihtiyaç duyduğunuz herhangi bir yönde onları çizmek için zor bir iş yapabilirsiniz.

Son zamanlarda meydana gelen bir Depremde olduğu gibi iç mekana bakmanıza gerek kalmayacaktı çünkü bence ortalama bir oyuncu gözlerini kuzey doğuya bir kapıya girme konusunda bile vurmamalı, fakat ön kapı yönelimli bir ekrana girmeli. güney ve bütün binanın düzenli bir ızgarada.

Sadece binaları ve bunun gibi önemli yerleri saklayacak olsanız da, yine de bir futbol topu modeli için tüm işleri yaptınız. Sonuç, dünyayı kare olmayan bir desen olarak saklamanız ve ardından oyuncunun bulunduğu her yerde böyle bir ızgaraya zorlamanızdır.

Başka bir alternatif daha var - eğer onlara o kadar kesin bir gösterge vermezseniz, onlara dört dik yönden hangisinin Kuzeye en yakın olduğunu söylemek için düşük hassasiyetli bir pusula vermişseniz, o zaman kaçabilirsiniz. Sadece oyuncunun nereye gittiğine bakılmaksızın 90 derece dönüş yaparak. Varsayılan grafik seviyesi göz önüne alındığında, sanki bazı girişleri gizleyen yüksek bir bina için endişelenmenize gerek yok gibi değil. Kutupların yakınında olup olmadıklarını bildikleri sürece, etrafındaki NPC'lerin Kuzey Doğu'ya gitmelerini söylemediği ya da gerçekten enlem ve boylam koordinatlarına gitmeye çalıştıkları sürece, pusulaların değişmesi konusunda fazla üzülmemeliler. .


1

Harita yapan insanların uzun zamandır sorduğu bir soru soruyorsun :)

Kesinlikle yardımcı olabilecek bazı fikir ve fikir almak için Harita Projeksiyonları bölümünü okuyun . Bir kürenin yüzeyini düz bir 2D düzlemde / düzlemde temsil etme zorluğu, insanların uzun zamandan beri düşündükleri bir şeydi.

Kısa cevap, hayır, yapamazsın. Bu nedenle, dünya haritalarına baktığınızda, bazı kısımlar bozuluyor ve bazı kısımlar değil. Genellikle kutup kutuptur çünkü çoğu harita kutupsal olmayan alanlarla ilgilidir.

Diğer cevapların söylediği gibi, cevap farklı bir şekil kullanmaktır (örneğin altıgenler veya üçgenler) veya haritayı dinamik bir şekilde kullanıcının mevcut bakış açısı için anında oluşturmaktır.

Kare fayans hiçbir soruyu yönetmek oldukça kolaydır, ancak bir fayans hex harita oluşturmak bu kadar zor olduğunu sanmıyorum.

İşte GameDev.net'ten bulabileceğiniz eski bir yazı. Izgara üzerinde izometrik ve altıgen fayans yapmakla ilgili.

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

Googling "hex hexing map" size çok fazla isabet verecek, bazıları yararlı değil.


1

Gökyüzündeki hareketli nesneleri izlemek ve gerçek 3D parçalarını elde etmek için üçgenleme yapmak amacıyla, SNC-RX570N modelindeki Sony'nin birkaç PTZ ağ kamerasını kullanıyorum. İlk kurulumun özelliklerinden biri, ara noktaların seçilmesi gereken katılımsız "turlar" tanımlamaktır. Sınırlı sayıda programlanabilir yol noktası vardır ve tüm yarımküreyi ("göksel küre") ufuktan zirve noktasına kadar boşluk bırakmadan kapatmak istiyorum.

Bu yüzden kendime "Tam kapsama alanı için gereken minimum ara nokta sayısı nedir (boşluk yok)" sorusunu sordum. Bunu tam olarak çözemediğimi keşfettim.

Kameranın sonsuz tavası (360 derece) ve 0-90 derece eğimi vardır, bu nedenle teorik olarak tam kapsama sağlamak mümkündür. Bilgisayar kullanımı için tasarlanan kamera ekranı, 4: 3 en-boy oranı dikdörtgen. 1x zoom'taki kaba yatay FOV 58 derecedir.

Hangi projeksiyonun seçildiğine bağlı olarak, sorunu temsil etmenin iki yolu vardır: - Mercator gibi düz çizgiler; - kutup, ufukta dairenin çevresi, zirve ise dairenin merkezi.

Polar'ı soruna yaklaşmanın en kolay yolu olarak görüyorum. Çemberi yatay FOV büyüklüğünde pasta dilimlerine ayırabilirim ve bu da dairenin etrafında 58 derece H-FOV ile 7 yol noktasına ihtiyacım olduğunu söyledi. Çok uzak çok iyi. İç yarıçap, basitçe eğim veya 58 derecenin 3/4'ü olan V-FOV'dur. Şimdiye kadar çok iyi - Ben çemberin en dış kısımlarını örttüm.

Ama zirveye yaklaştıkça daha da zorlaşıyor. Yol noktalarımdan birinin tam olarak zirvede olduğunu varsayacağım. Görünüm dikdörtgenimi dairenin merkezinin etrafındaki bölgeye nasıl eşlerim? Bu bir dikdörtgen mi, elips mi, iğnelik mi, yoksa ne? Güzel temiz dış kaplama ile zenith'teki bu garip şekil arasındaki orta ucu nasıl doldururum? Afallamış.

Bir yarımkürenin katı açısının 2 x PI steradiyanlar olduğunu ve 1x zoom'taki FOV'umun 0.762 st olduğunu ve bunun için en az 9 mozaikleme ihtiyacım olduğunu not ediyorum. Cevabın 9'dan yüksek olduğundan şüpheleniyorum.


Buna ne dersin .. Çemberin PI ^ 2 rad ^ 2 alanı var ve FOV dikdörtgenleri ise 0,75 rad ^ 2 alanı. Doğal olarak, tam kapsama için 14 puana yuvarlanması gereken 13.16 puana ihtiyacımız var. Şimdi soru şu - bunlar nasıl yerleştirilecek?
Andrew

0

Dünya çapında bir ızgara yapmak istiyorsanız, gezegeni ülkeler ya da kıtalara bölmenizi ve her birine uygun şekilde merkezlenmiş bir kare ızgara oluşturmanızı öneririm. Okyanusun dikişleri örtmesine izin verin.


Aslında benim sorum şu: “gerçekten sorduğumu düşündüğünüzü yapamadığımdan, bunun yerine ne yapabilirim?”.
32'de clweeks

Çok iyi, o zaman düzenlendi.
zaratustra

Evet, sanırım diğer taraf tarafından da takip ediliyorum. Fuller'ın Dymaxion Haritasını uygulamayı düşünüyordum, ancak üçgen karolarla çalışmak, başladığım kutup döşeme problemi kadar bir küme * gibi göründü. Öyleyse, önerinizle, birileri Kuzey Amerika'dan kuzey Asya'ya yelken açıyorsa ve koordinatlar önemliyse (belki kayan tabanlar veya başka bir şey yapabilirler) dikişleri nasıl birleştiririm? Sadece bir NA: A5 -> A: Z475 tipi bağlantı tablosu mu buluyorsunuz?
38'te clweeks

Sanırım. Bunu yapmayı başarırlarsa, onlara sadece bir ödül vereceğim ve mantıklı bir yere gidinceye kadar onları ızgaradan çıkaracağım.
zaratustra
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.