/// <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); }
/// <summary> /// 回転 /// </summary> public static Pos Rotation(double theta) { return(new Pos(Cal.Cos(theta), Cal.Sin(theta))); }