将X坐标从一个分辨率转换为另一个分辨率

时间:2017-08-14 22:38:59

标签: c++

通常我会这样做以将一种分辨率转换为另一种分辨率:

int newX = (x / oldResolutionX) * newResolutionX;

但是这次我无法使用它,我无法理解数学(从来没有真正擅长数学,请原谅我)。无论如何,我的分辨率是1280x720,我想将像(720/360)这样的点转换为: Picture of new Resolution

宽度为854,高度为720,因此我不必对y坐标进行转换。但是这里(对我来说)棘手的部分:0不是实际的0. X从-107开始到747结束。你们能解释一下我如何将(720/360)从1280x720转换成这个解析度?提前谢谢,抱歉数学上不好......

1 个答案:

答案 0 :(得分:0)

所以,你需要一个从[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)将其强制转换为整数