通常我会这样做以从一种分辨率转换为另一种分辨率:
int newX = (x / oldResolutionX) * newResolutionX;
但是这次我不能使用它,而且我无法理解数学(从来没有真正擅长数学,请原谅我)。无论如何,我的分辨率是 1280x720,我想将 (720/360) 之类的点转换为: Picture of new Resolution
宽度为 854,高度为 720,因此我不必对 y 坐标进行转换。但这是(对我来说)棘手的部分:0 不是实际的 0。X 从 -107 开始到 747 结束。你们能给我解释一下我如何将 (720/360) 从 1280x720 转换成这个分辨率吗?提前致谢,抱歉数学不好...
最佳答案
因此,您需要从 [0...1280] 到 [-107...747] 的线性映射,同时保持 y 不变。
int newX = (int)((x / 1280.0) * 854.0) -107
那么,这里发生了什么?
- x 将在 0 到 1280 之间变化。
- 如果 x == 0:(0/1280) * 854 将为 0,结果等于 -107。
- 如果 x == 1280:(1280/1280) * 854 = 854:结果将为 747
一些说明:
.0
用于强制浮点类型。(int)
是将其转换回整数
关于c++ - 将 X 坐标从一种分辨率转换为另一种分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684043/