【问题标题】:Need help with C# function to translate smoothly between numeric ranges需要 C# 函数的帮助以在数字范围之间平滑转换
【发布时间】:2010-03-18 16:54:22
【问题描述】:

我正在尝试编写一个函数:
输入:
源范围、源值、输出范围、曲线类型(线性、平滑)
输出:
输出是转换成“输出范围”的“源值”
根据曲线类型。

我希望我在这里有意义...

有什么想法吗?
谢谢。

【问题讨论】:

  • 只有我不明白你的意思吗?能给我举个例子吗?转换究竟是如何完成的,你输入的究竟是什么,输入的类型是什么?
  • 如果您提供了一些输入和输出的具体示例,那么它可能有意义。
  • 实际上,这个问题对我来说很有意义。这是一个简单的插值。 (当然,“平滑”作为曲线类型没有多大意义。我想这应该是正弦曲线或 S 曲线或类似的曲线。)
  • 这里是一个例子。输入范围是 0-1024 源值是 10 输出范围是 2-0.5 所以输出值会接近 2 但困难的部分是使它平滑,如下图所示:planetside.co.uk/docs/tg2/noderef/window_1_16_2_image_0.png
  • 为了得到类似的图表,这里有一个计算比率的excel公式,首先将X计算为X1与X2的比率(从0到1),然后将其代入以下公式,然后将其放大到输出范围:=IF(A1<=0,5;A1*A1*2;1-(1-A1)*(1-A1)*2),该公式是一个 excel 公式,但应该很容易重写。

标签: c# math translation numerical


【解决方案1】:

对 B 样条进行一些研究。我认为这些将能够解决您的问题。或者,分段多项式插值可能就足够了。查看“C 中的数值配方”以获取代码和示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多