Beispiel #1
0
 /// <summary>
 /// 2Dベクトルの原点中心の回転を行います
 /// </summary>
 /// <param name="theta"></param>
 /// <returns></returns>
 public Pos Rotation2DVector(double theta)
 {
     return(new Pos(
                x * Cal.Cos(theta) - y * Cal.Sin(theta),
                x * Cal.Sin(theta) + y * Cal.Cos(theta)
                ));
 }
        /// <summary>
        /// 座標点横軸データの任意の点から縦軸データの線形補間データを返します
        /// </summary>
        /// <param name="Data"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public Pos Value(double x)
        {
            var result = new Pos(x, double.NaN);

            for (int i = 0; i < Data.Count - 1; i++)
            {
                if (Data[i].x <= x && x < Data[i + 1].x)
                {
                    result.y = Cal.Lerp(Data[i], Data[i + 1], x);
                }
            }
            if (Data[Data.Count - 1].x == x)
            {
                result = Data[Data.Count - 1];
            }
            //できなかったらNaNを投げる
            return(result);
        }
Beispiel #3
0
 /// <summary>
 /// 回転
 /// </summary>
 public static Pos Rotation(double theta)
 {
     return(new Pos(Cal.Cos(theta), Cal.Sin(theta)));
 }