É fácil lidar com a maneira como os locais interagem em uma grade cartesiana limpa. É apenas matemática de baunilha. E você pode meio que ignorar a geometria da superfície da esfera por um monte, se quiser apenas truncar os pólos ou algo assim. Mas continuo tendo idéias para jogos em que o espaço polar é importante. ARGs com código geográfico e roguelikes globais e outras coisas.
Quero locais quadrados (ish?) - razoavelmente representáveis por blocos quadrados do mesmo tamanho em todo o mundo.
Isso tem que ser um problema resolvido, certo?
Quais são as soluções?
ETA:
No equador - e assumindo que as localizações dos quadrados são razoavelmente pequenas, é quase verdade que você pode ter um quadrado nas linhas norte e sul da linha mais equatorial. E você provavelmente poderia se safar disso apenas acenando com a mão a diferença de até 45 graus ou mais. Mas, eventualmente, você precisa ter menos quadrados em uma linha circunferencial da ala de pólos. Se eu reduzir o comprimento da linha em um e compensar os quadrados em 1/2, eles serão como hexágonos e é relativamente fácil fazer a codificação para acompanhar as conexões. Mas, à medida que você avança, fica cada vez mais extremo.
Projetar a superfície do mundo na superfície de um cubo é tentador. Mas achei que já deveria haver soluções mais elegantes em uso.
Se eu fiz a coisa do cubo (sem dissecá-la ainda mais por meio da geodésia), existem prós e contras relacionados à colocação do poste no centro de uma face ou no vértice de três lados?
fonte
Respostas:
Eu acho que você está procurando uma grade geodésica . Muitas pessoas aproximam a Terra com um cubo:
Carlos A. Furuti tem muitos mapas da Terra que se dobram em um cubo
Você também pode estar interessado na projeção quincuncial de The Peirce, que mapeia toda a Terra em um ou dois quadrados.
O icosaedro (mapa Dymaxion; "Qual é a melhor maneira de pixelizar uma esfera?" ) Gera um pouco menos de distorção, mas é mais complicado.
fonte
Eu sempre quis ver um jogo em que o mapa esférico usasse algum tipo de poliedro comum, em vez de tocar o mundo em um toro. Essa técnica é chamada de mapa Dymaxion . (fonte: grunch.net )
Eu recomendaria um icosaedro . Coloque o triângulo atual para que fique alinhado em uma aresta de um quadrado. Quando o jogador sair do triângulo, puxe o próximo triângulo e mapeie-o de forma idêntica. As coordenadas do jogador serão remapeadas para a nova seção. Portanto, cada seção do seu mapa tem seu próprio sistema de coordenadas. Você também precisará desenhar o plano de fundo para as 3 seções adjacentes e as 9 semi-adjacentes. Não acho que o usuário possa determinar como é implementado se for bem-feito.
Aqui está um exemplo de como isso pode funcionar.
É claro que depois de ler isso, você provavelmente usará o mapa do toro clássico e eu estarei esperando para ver um verdadeiro universo poliédrico.
fonte
Se você criar uma esfera usando uma base geodésica, a área polar será tratada de maneira diferente de qualquer outra região em termos de espaçamento de vértices, o que facilita o mapeamento UV uniforme.
A maioria dos aplicativos de modelagem permite criar uma esfera primitiva usando um design geodésico.
fonte
Não há como "mapear" uma esfera com quadrados (ou retângulos) e fazer com que todas se juntem em vértices "comuns".
No entanto, seria possível gerar a "visão local" sob demanda? O espaço do problema não está realmente indicado na pergunta, mas se eu estivesse trabalhando em algo em que queria uma vista da cidade, mas quisesse girar o mundo, poderia temporariamente apenas mapear uma grade em uma seção "plana o suficiente" o mundo. A origem da grade seria onde quer que estivesse o seu centro local, e o normal naquele ponto corresponde ao normal da superfície do planeta.
Então, quando alguém sai da grade, um novo é gerado sob demanda.
Isso pode ou não funcionar para o OP, mas para alguns pode ser útil.
fonte
Pegue um cubo, com a distância entre os vértices e o centro do cubo igual ao raio desejado. Você tem uma esfera composta de 6 quadriláteros.
Agora, em cada etapa, pegue cada quadrilátero, divida-o em 4 e mova os novos 5 vértices (um no centro e 4 nas bordas - aviso, eles são COMPARTILHADOS) para longe do centro para que eles gostem do desejado raio.
Não, esse método não é perfeito, mas pelo menos é uma distribuição mais ou menos igual na esfera.
fonte
Com o dymaxion max, você tem hexágonos dispostos em triângulos em uma superfície plana, mas como o mapa não é realmente plano, eles são pentágonos. Se você deseja permitir que o jogador mantenha sua orientação quando percorrer determinadas partes, será necessário separar os mapas de localização de como eles são realmente armazenados. Para coisas como edifícios, você pode armazenar um pequeno mapa de vetores retangulares e apenas fazer um trabalho duro de desenhá-los na orientação que você precisar.
Você não precisaria sempre fazer com que o interior parecesse um terremoto recente, porque acho que o jogador comum não deveria nem pensar em entrar em uma porta para o nordeste, mas entrar em uma tela com a porta da frente sul e todo o edifício em uma grade regular.
Embora, se você estiver indo apenas para armazenar prédios e locais importantes como esse, você já fez todo o trabalho para um padrão de bola de futebol. O resultado final é que você está armazenando o mundo como um padrão não quadrado e forçando-o a uma grade onde quer que o jogador esteja.
Porém, há outra alternativa: se você não der uma indicação precisa da esfera, como se você tivesse lhes dado uma bússola de baixa precisão para dizer qual das quatro direções ortogonais era a mais próxima do norte, você poderia fugir apenas fazendo rotações de 90 graus para qualquer local em que o jogador foi. Dado o nível de gráficos assumido, não é como se você tivesse que se preocupar com um prédio alto que obscurecesse alguma porta. Desde que eles soubessem se estavam perto dos polos ou não, não deveriam ficar muito chateados com a mudança da bússola neles, a menos que os NPCs por lá lhes dissessem para ir para o nordeste ou tentassem realmente ir para coordenadas específicas de latitude e longitude .
fonte
Você está fazendo uma pergunta que as pessoas que fazem mapas fazem há muito tempo :)
Definitivamente, leia sobre Mapear projeções para obter algumas idéias e idéias que podem ajudar. O desafio de representar a superfície de uma esfera em / com um plano 2D plano tem sido algo em que as pessoas pensam há muito tempo.
A resposta curta é: não, você não pode fazê-lo. É por isso que, quando você olha para os mapas do mundo, algumas partes estão distorcidas e outras não. Geralmente são os pólos, porque a maioria dos mapas é sobre áreas não polares.
Como outras respostas disseram, a resposta é usar uma forma diferente (hexágonos ou triângulos, por exemplo) ou gerar dinamicamente seu mapa em tempo real para o ponto de vista atual do usuário.
Ladrilhos quadrados são muito fáceis de gerenciar, mas não acho que criar um mapa hexadecimal com blocos seja tão difícil.
Aqui está um artigo mais antigo do GameDev.net que você pode achar útil. Trata-se de fazer blocos isométricos e hexagonais em uma grade.
http://www.gamedev.net/reference/articles/article747.asp
Ao pesquisar no Google "mapa hexadecimal em mosaico", você obtém muitos hits, alguns úteis outros não.
fonte
Estou operando várias câmeras de rede PTZ da Sony, modelo SNC-RX570N, com o objetivo de rastrear objetos em movimento no céu e triangular para obter trilhas 3D verdadeiras. Um dos aspectos da configuração inicial é definir "passeios" autônomos, para os quais os waypoints devem ser escolhidos. Há um número restrito de waypoints programáveis, e quero cobrir todo o hemisfério (a "esfera celeste") do horizonte ao zênite, sem deixar lacunas.
Então, eu me perguntei "Qual é o número mínimo de pontos de referência necessários para uma cobertura completa (sem lacunas)?". Eu descobri que na verdade não consigo entender completamente isso.
A câmera possui panorâmica infinita (360 graus) e inclinação de 0 a 90 graus; portanto, teoricamente, é possível obter uma cobertura completa. O visor da câmera, destinado ao uso do computador, é retangular na proporção de 4: 3. O FOV horizontal aproximado com zoom de 1x é de 58 graus.
Existem duas maneiras de representar o problema, dependendo de qual projeção se escolhe: - retilíneo como Mercator, em que o horizonte é "o equador" e o zênite é "o pólo", dilatado em mais de 360 graus de panela. - polar, em que o horizonte é a circunferência do círculo e o zênite é o centro do círculo.
Acho polar a maneira mais fácil de abordar o problema. Posso dividir o círculo em fatias de pizza horizontais do tamanho de FOV, e isso me diz que preciso de 7 pontos de referência ao redor do círculo com esse H-FOV de 58 graus. Por enquanto, tudo bem. O raio interno é simplesmente a inclinação ou V-FOV, que é 3/4 de 58 graus. Até aí tudo bem - eu cobri as partes mais externas do círculo.
Mas fica mais complicado quando nos aproximamos do zênite. Suponho que um dos meus pontos de referência esteja exatamente no zênite. Como mapeio meu retângulo de visão na região ao redor do centro do círculo? Essa forma é um retângulo, uma elipse, uma almofada de alfinetes ou o quê? Como preencher a parte intermediária entre a bela cobertura externa elegante e essa forma estranha no zênite? Confuso.
Observo que o ângulo sólido de um hemisfério é 2 * PI steradians, e o do meu FOV em 1x zoom é 0,762 st, o que significa que preciso de um mínimo de 9 pavimentações. Suspeito que a resposta seja superior a 9.
fonte
Se você deseja criar uma grade mundial, sugiro que você divida o planeta em países ou continentes e faça uma grade quadrada adequadamente centralizada em cada um. Deixe o oceano cobrir as costuras.
fonte