C# 将任意数字范围转换为-1/1比例

C# 将任意数字范围转换为-1/1比例,c#,math,C#,Math,我需要将任何范围转换为-1到1的比例。我有多个范围,我正在使用,因此需要这个方程是动态的。下面是我目前的方程式。它适用于0为中心点的范围。即200至-200。我有另一个范围,但不是很好地转换。6000到4000。我还测试了0到360,效果很好 var offset = -1 + ((2 / yMax) * (point.Y)); 我可能遇到的一个主要问题是,有时我会得到一个超出范围的值,因此,转换后的值也需要超出-1到1的范围 这是为了得到一个真实世界的值,我需要能够将它绘制成一个OpenGL

我需要将任何范围转换为-1到1的比例。我有多个范围,我正在使用,因此需要这个方程是动态的。下面是我目前的方程式。它适用于0为中心点的范围。即200至-200。我有另一个范围,但不是很好地转换。6000到4000。我还测试了0到360,效果很好

var offset = -1 + ((2 / yMax) * (point.Y));
我可能遇到的一个主要问题是,有时我会得到一个超出范围的值,因此,转换后的值也需要超出-1到1的范围

这是为了得到一个真实世界的值,我需要能够将它绘制成一个OpenGL点。我正在使用.NET4.0和Tao框架

rescaled = -1 + 2 * (point.Y - yMin) / (yMax - yMin);
但是,在OpenGL中,可以使用投影矩阵(或着色器中的矩阵乘法)来实现这一点。阅读
glTranslatef
glScalef
了解如何使用它们或如何使用矩阵乘法复制它们


但是,在OpenGL中,可以使用投影矩阵(或着色器中的矩阵乘法)来实现这一点。阅读
glTranslatef
glScalef
了解如何使用它们或如何使用矩阵乘法复制它们。

这就成功了。谢谢我曾讨论过使用矩阵乘法,但我遇到的问题只是需要缩放Y坐标。X坐标已在范围内。我会接受这个答案,只要它允许我。这就成功了。谢谢我曾讨论过使用矩阵乘法,但我遇到的问题只是需要缩放Y坐标。X坐标已在范围内。我会尽快接受这个答案。