Перевод между декартовой и экранной координатами

Для моей игры мне нужны функции для перевода между двумя системами координат. Ну это такВ основном это математический вопрос, но мне нужен код C ++, чтобы сделать это, и немного объяснения, как решить мою проблему.

Координаты экрана:

а) верхний левый угол 0,0

б) нет минус значений

в) вправо + = х (чем больше значение х, тем больше справа точка)

г) снизу + = у

Декартовы 2D координаты:

а) средняя точка (0, 0)

б) минус значения существуют

в) правый + = х

г) дно - = у (чем меньше у, тем больше у дна точка)

Мне нужен простой способ перевода из одной системы в другую и наоборот. Чтобы сделать это, (я думаю) мне нужны некоторые знания, например, где находится (0, 0) [верхний левый угол в экранных координатах] в декартовых координатах.

Однако существует проблема, заключающаяся в том, что для некоторой точки в декартовых координатах после перевода ее в экранные координаты позиция в экранных координатах может быть минусовой, что является бессмысленным. Я не могу поместить верхний левый угол координат экрана в (-inifity, + infinity) декартовых координат ...

Как я могу решить это? Единственное решение, которое я могу придумать, это поместить экран (0, 0) в декартову (0, 0) и использовать только четверть декартовой системы IV, но в этом случае использование декартовой системы не имеет смысла ... I '

Я уверен, что есть способы перевода экранных координат в декартовы и наоборот, но яя делаю что-то не так в своем мышлении с этим минусом ценностей.

Ответы на вопрос(5)

Ваш ответ на вопрос