c++ - 将 X 坐标从一种分辨率转换为另一种分辨率

标签 c++

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

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/

相关文章:

c++ - 查找存储在优先级队列中的值的有效方法

c++ - 使用 move 构造函数

c++ - 是否可以使用三元来切换/控制/预测成员函数调用?

c++ - 类继承后不可访问

c++ - Ifstream 从文本文件中读取错误的字符

c++ - 仅公开 C++ 中的类实例

c++ - c++中三元运算符的副作用和返回类型是什么?

c++ - 试图将一个简单的按钮绑定(bind)到 SFGUI 中的 OnClick 函数

c++ - 如何从 boost int256_t 中获取以 2 为底的对数?

c++ - 将字符串转换为 char*