【问题标题】:Convert any number range to -1/1 scale将任何数字范围转换为 -1/1 比例
【发布时间】:2013-12-31 01:40:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# math


    【解决方案1】:
    rescaled = -1 + 2 * (point.Y - yMin) / (yMax - yMin);
    

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

    【讨论】:

    • 成功了。谢谢。我辩论过使用矩阵乘法,但我遇到的问题只是需要缩放 Y 坐标。 X 坐标已经在范围内。我会尽快接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2017-01-11
    相关资源
    最近更新 更多