Q:

値をリマップできる関数を知りたい

たとえば０から１０の間で値を受け取って、それを-1から１の数値に変換してくれるような関数を探しています。
リマップという表現が正しいのかわからないですが、ShaderForgeで言う所のRemapのような関数をしりたいです。そもそもあるんでしょうか？
単純な質問で恐縮なんですが、自分で調べても出てこないので質問します。

A:

Unityフォーラムに類似質問の回答がありました。
標準ではRemap関数が用意されていないようですので、自作する必要があります。
拡張メソッドを使うならば、下記のRemapのようなメソッドを使用します。
ただし下記のコードでは範囲外の値を渡された時にも計算済みの値を返します。
ShaderForgeのRemapのように範囲外の場合は計算せずに渡された値を返すならば、コードの修正を行ってください。
using System;

namespace ConsoleApplication1
{
    public static class ExtensionMethods
    {
        public static float Remap(this float value, float from1 = 0, float to1 = 10, float from2 = -0.1f, float to2 = 0.1f)
        {
            return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
        }

    }

    //簡単のためUnityではなくコンソールアプリ版のサンプルコード
    class Program
    {
        static void Main(string[] args)
        {
            for (var i = 0; i <= 10; i++)
            {
                var f = (float)i;
                var r = f.Remap(0f, 10f, -0.1f, 0.1f);
                Console.WriteLine("{0}, {1}", r, f.Remap()); //引数未省略と省略で同一の結果となる
            }
            Console.WriteLine(100f.Remap());                 //エラーとならずに1.9を返す
            Console.Read();
        }
    }
}

