Traduzindo entre coordenadas cartesianas e de tela
Para o meu jogo eu preciso de funções para traduzir entre dois sistemas de coordenadas. Bem, é principalmente questão de matemática, mas o que eu preciso é o código C ++ para fazer isso e um pouco de explicação sobre como resolver o meu problema.
Coordenadores de tela:
a) canto superior esquerdo é 0,0
b) sem valores negativos
c) direito + = x (quanto mais é o valor x, mais à direita é o ponto)
d) fundo + = y
Coordenadas cartesianas 2D:
a) ponto médio é (0, 0)
b) existem valores negativos
c) direito + = x
d) bottom - = y (quanto menos y, mais no final é ponto)
Eu preciso de uma maneira fácil de traduzir de um sistema para outro e vice-versa. Para fazer isso, (eu acho) preciso de algum conhecimento como onde está o (0, 0) [canto superior esquerdo nas coordenadas da tela] colocado nas coordenadas cartesianas.
No entanto, há um problema que, em algum ponto das coordenadas cartesianas, após traduzi-las para as da tela, a posição nas coordenadas da tela pode ser negativa, o que é um absurdo. Eu não posso colocar o canto superior esquerdo das coordenadas da tela em (-inifity, + infinito) coordenadas cartesianas ...
Como posso resolver isso? A única solução que posso imaginar é colocar a tela (0, 0) em cartesiano (0, 0) e usar apenas o quarto IV do sistema cartesiano, mas, nesse caso, usar o sistema cartesiano é inútil ...
Tenho certeza de que há maneiras de traduzir coordenadas de tela em coordenadas cartesianas e vice-versa, mas estou fazendo algo errado em meu pensamento com esses valores negativos.