将任何数字范围转换为-1/1比例

时间:2013-12-30 17:38:37

标签: c# math

我需要将任何范围转换为-1到1的比例。我有多个范围我正在使用,因此需要这个方程是动态的。以下是我目前的等式。它适用于0为中心点的范围。 I.E. 200到-200。我有另一个范围但是没有很好地转换。 6000到4000.我也测试了0到360,它可以工作。

var offset = -1 + ((2 / yMax) * (point.Y));

我可能遇到的一个主要问题是,有时我会得到一个超出范围的值,因此,转换后的值也必须在-1到1范围之外。

这是为了获取一个真实世界值的值,我需要能够将其绘制到OpenGL点。我正在使用.NET 4.0和Tao Framework。

1 个答案:

答案 0 :(得分:3)

rescaled = -1 + 2 * (point.Y - yMin) / (yMax - yMin);

但是,在OpenGL中,您可以使用投影矩阵(或在着色器内部乘以矩阵)来完成此操作。阅读glTranslatefglScalef了解如何使用它们或如何使用矩阵乘法复制它们。