C# 简单周期函数算法

在数据分析、游戏地形生成、程序化纹理生成等多个领域都要用到周期函数的算法

下面是一些简单周期函数,可以直接调用


  1. 正弦函数

常见的周期函数,图像:

对应代码

        /// <summary>
        /// 三角函数
        /// </summary>
        /// <param name="x">自变量</param>
        /// <param name="A">振幅</param>
        /// <param name="omega">角速度</param>
        /// <param name="phi">初相</param>
        /// <param name="B">平衡位置</param>
        /// <returns></returns>
        public static float Sin(float x, float A, float omega, float phi, float B)
        {
            return (float)(A * Math.Sin(omega * x + phi) + B);
        }

2.方波函数

图像:

代码:

        /// <summary>
        /// 方波函数
        /// </summary>
        /// <param name="x">自变量</param>
        /// <param name="A">振幅</param>
        /// <param name="omega">角速度</param>
        /// <param name="phi">初相</param>
        /// <param name="B">平衡位置</param>
        /// <returns></returns>
        public static float Square(float x, float A, float omega, float phi, float B)
        {
            float t = omega * x + phi;
            float re = t % 2 < 1 ? 1 : -1;
            return re * A + B;
        }

3.锯齿波函数

图像:

代码:

        /// <summary>
        /// 锯齿波
        /// </summary>
        /// <param name="x">自变量</param>
        /// <param name="A">振幅</param>
        /// <param name="omega">角速度</param>
        /// <param name="phi">初相</param>
        /// <param name="B">平衡位置</param>
        /// <returns></returns>
        public static float Trigonometric(float x, float A, float omega, float phi, float B)
        {
            float t = omega * x + phi;
            float re = t % 2 < 1 ? t % 2 : 2 - t % 2;
            return re * A + B;
        }

4.柱面函数

图像:

代码:

        /// <summary>
        /// 柱面
        /// </summary>
        /// <param name="x">自变量</param>
        /// <param name="A">振幅</param>
        /// <param name="omega">角速度</param>
        /// <param name="phi">初相</param>
        /// <param name="B">平衡位置</param>
        /// <returns></returns>
        public static float Cylinder(float x, float A, float omega, float phi, float B)
        {
            float t = omega * x + phi;
            float re = (float)Math.Sqrt(1 - Math.Pow(1 - t % 2, 2));
            return re * A + B;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值