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.

questionAnswers(5)

yourAnswerToTheQuestion