C#或unity中實現正弦函數
本類用於第一,需要繪制一條正弦曲線的朋友;第二,需要根據正弦曲線控制物體運動的朋友;里面都有注釋,代碼如下:
unity中使用的代碼:
public class Curvy_Sin { /// <summary> /// 周期 /// </summary> private float lifeTime = 2; /// <summary> /// 波峰 /// </summary> private float MaxPos = 0; /// <summary> /// 波谷 /// </summary> private float MinPos = 0; /// <summary> /// 計算時使用的周期,避免周期為小於零的情況 /// </summary> private float ZQ { get { if (lifeTime <= 0) { return 2; } else { return lifeTime; } } } /// <summary> /// 構造一個正弦曲線 /// </summary> /// <param name="zhouqi"></param> /// <param name="minp"></param> /// <param name="maxp"></param> public Curvy_Sin(float zhouqi, float minp, float maxp) { this.lifeTime = zhouqi; this.MinPos = minp; this.MaxPos = maxp; } /// <summary> /// 根據X軸獲取對應Y軸的值 /// </summary> /// <param name="x"></param> /// <returns></returns> public float GetZhengXianValue(float x) { float innner = (2 * (float)Mathf.PI) / ZQ; float ya = (float)Mathf.Sin(innner * x); float maall = (MaxPos - MinPos) * 0.5f; float middle = maall + MinPos; return (middle + maall * ya); } /// <summary> /// 修改正弦參數 /// </summary> /// <param name="zhouqi"></param> /// <param name="minp"></param> /// <param name="maxp"></param> public void SetCurvyZhengXian(float zhouqi, float minp, float maxp) { this.lifeTime = zhouqi; this.MinPos = minp; this.MaxPos = maxp; } }
C#中winform或WPF