【发布时间】:2018-01-22 20:30:27
【问题描述】:
通常我会这样做以从一种分辨率转换为另一种分辨率:
int newX = (x / oldResolutionX) * newResolutionX;
但这一次我不能使用它,我无法理解数学(从来没有真正擅长数学,请原谅我)。无论如何,我的分辨率是 1280x720,我想将像 (720/360) 这样的点转换为: Picture of new Resolution
宽度是 854,高度是 720,所以我不必对 y 坐标进行转换。但这是(对我而言)棘手的部分:0 不是实际的 0。X 从 -107 开始,到 747 结束。你们能向我解释一下如何将(720/360)从 1280x720 转换为这个分辨率吗?在此先感谢,抱歉数学不好...
【问题讨论】:
-
如果有 107 或 747 的偏移量,那么只需添加这些..
-
那么,您只需要一个从 [-107...747] 到 [0...1280] 的 X 映射?
-
@JesperJuhl (720 / 1280) * 854 + 107 = 587.375,但应该是 320。或者我不明白你所说的偏移量是什么意思
-
@Stefan 是的._.
-
其实很简单。假设我们有
y,我们需要映射到一个新的值x,然后:x = (y - ymin) / (ymax - ymin) * (xmax - xmin) + xmin。在你的情况下ymin = -107, ymax = 747和xmin = 0, xmax = 1280。
标签: c++