映射区间[0,1]到[-1,1]到[0-255]

何时应用

读取法线贴图数据,转换为向量时会使用。

问题

已知:

向量为[-1,1]范围,颜色为[0,1]或[0,255]范围

问:

如何互相转化?

代码

namespace TimorTool
{
    public static class Mapping
    {
        /// <summary>
        /// <para>转换区间:</para>
        /// <para>[0,1]到[-1,1]</para>
        /// </summary>
        /// <param name="value">输入值范围:[0,1]</param>
        /// <returns>输出值范围:[-1,1]</returns>
        public static float ZeroAndOneToNegativeOneAndOne(float value)
        {
            return 2f * value - 1f;
        }

        /// <summary>
        /// <para>转换区间:</para>
        /// <para>[-1,1]到[0,1]</para>
        /// </summary>
        /// <param name="value">输入值范围:[-1,1]</param>
        /// <returns>输出值范围:[0,1]</returns>
        public static float NegativeOneAndOneToZeroAndOne(float value)
        {
            return value / 2f + 0.5f;
        }

        /// <summary>
        /// <para>转换区间:</para>
        /// <para>[0,1]到[0,255]</para>
        /// </summary>
        /// <param name="value">输入值范围:[0,1]</param>
        /// <returns>输出值范围:[0,255]</returns>
        public static float ZeroAndOneToColor32(float value)
        {
            return value * 255f;
        }

        /// <summary>
        /// <para>转换区间:</para>
        /// <para>[-1,1]到[0,255]</para>
        /// </summary>
        /// <param name="value">输入值范围:[-1,1]</param>
        /// <returns>输出值范围:[0,255]</returns>
        public static float NegativeOneAndOneToCOlor32(float value)
        {
            return value / 2f *255f + 255f / 2f;
        }
    }
}
点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Title - Artist
0:00