Перевод между декартовой и экранной координатами
Для моей игры мне нужны функции для перевода между двумя системами координат. Ну это такВ основном это математический вопрос, но мне нужен код C ++, чтобы сделать это, и немного объяснения, как решить мою проблему.
Координаты экрана:
а) верхний левый угол 0,0
б) нет минус значений
в) вправо + = х (чем больше значение х, тем больше справа точка)
г) снизу + = у
Декартовы 2D координаты:
а) средняя точка (0, 0)
б) минус значения существуют
в) правый + = х
г) дно - = у (чем меньше у, тем больше у дна точка)
Мне нужен простой способ перевода из одной системы в другую и наоборот. Чтобы сделать это, (я думаю) мне нужны некоторые знания, например, где находится (0, 0) [верхний левый угол в экранных координатах] в декартовых координатах.
Однако существует проблема, заключающаяся в том, что для некоторой точки в декартовых координатах после перевода ее в экранные координаты позиция в экранных координатах может быть минусовой, что является бессмысленным. Я не могу поместить верхний левый угол координат экрана в (-inifity, + infinity) декартовых координат ...
Как я могу решить это? Единственное решение, которое я могу придумать, это поместить экран (0, 0) в декартову (0, 0) и использовать только четверть декартовой системы IV, но в этом случае использование декартовой системы не имеет смысла ... I '
Я уверен, что есть способы перевода экранных координат в декартовы и наоборот, но яя делаю что-то не так в своем мышлении с этим минусом ценностей.