为了我的游戏,我需要函数来在两个坐标系之间进行转换。虽然这主要是数学问题,但我需要的是C++代码以及一些解释如何解决我的问题。
屏幕坐标:
a)左上角为0,0
b)没有负值
c)右侧增加x(x值越大,点越靠右)
d)底部增加y
笛卡尔2D坐标:
a)中心点为(0,0)
b)存在负值
c)右侧增加x
d)底部减少y(y越少,点越靠下)
我需要一种简单的方法来在两个系统之间进行转换。为此,我认为需要一些知识,如(0,0)[屏幕坐标中的左上角]在笛卡尔坐标系中的位置。
然而,有一个问题,即对于笛卡尔坐标系中的某些点,在将其转换为屏幕坐标后,屏幕坐标中的位置可能为负数,这是不合理的。我不能将屏幕坐标的左上角放在(-inifity,+infinity)的笛卡尔坐标中......
我该怎么解决这个问题?我能想到的唯一解决方案是将屏幕(0,0)放置在笛卡尔(0,0)中,并仅使用笛卡尔系统的第IV象限,但在这种情况下,使用笛卡尔系统是毫无意义的......
我相信有方法可以将屏幕坐标转换为笛卡尔坐标,反之亦然,但在处理负值时,我的思维方式可能存在问题。
屏幕坐标:
a)左上角为0,0
b)没有负值
c)右侧增加x(x值越大,点越靠右)
d)底部增加y
笛卡尔2D坐标:
a)中心点为(0,0)
b)存在负值
c)右侧增加x
d)底部减少y(y越少,点越靠下)
我需要一种简单的方法来在两个系统之间进行转换。为此,我认为需要一些知识,如(0,0)[屏幕坐标中的左上角]在笛卡尔坐标系中的位置。
然而,有一个问题,即对于笛卡尔坐标系中的某些点,在将其转换为屏幕坐标后,屏幕坐标中的位置可能为负数,这是不合理的。我不能将屏幕坐标的左上角放在(-inifity,+infinity)的笛卡尔坐标中......
我该怎么解决这个问题?我能想到的唯一解决方案是将屏幕(0,0)放置在笛卡尔(0,0)中,并仅使用笛卡尔系统的第IV象限,但在这种情况下,使用笛卡尔系统是毫无意义的......
我相信有方法可以将屏幕坐标转换为笛卡尔坐标,反之亦然,但在处理负值时,我的思维方式可能存在问题。