【发布时间】:2010-02-03 19:34:38
【问题描述】:
我有一个函数,该函数将采用一系列值,需要将其标准化为范围 [-1, 1]。 MathHelper.Clamp() 只接受超出范围的值并将它们设置为超出的范围。 XNA 或 C# 有什么可以满足我的需求吗? (我正在查看文档,但找不到。)
这是获取鼠标的移动。这些值是一个刻度和下一个刻度之间鼠标坐标的差异。我不确定它的最大值是多少。
此函数将一次取一个值 - 因此没有迭代所有值来缩放它们或查看最小值和最大值是多少。
这是我目前拥有的:
// max - min cannot == 0
private float normalizeToRange(float value, float min, float max) {
return (2.0f * (value - min) / (max - min)) -1.0f;
}
【问题讨论】:
-
当您说“值范围”时,您的意思是例如您有一个点,并且您想将其移动到原点 (0, 0) 的 1 个单位内,以便比率X 和 Y 之间是否保留?如果距离为 1,或者 X 或 Y 的最大值为 1(X 和 Y 的 45 度方向上的距离 1 约为 0.7。)