using System; using System.Collections.Generic; /// /// /// public class CVT { /// /// /// /// /// public static double MToMM(object M) { return Math.Round(Convert.ToDouble(M.ToString()) * 1000, 2); } /// /// /// /// /// public static double MMToM(object MM) { return Math.Round(Convert.ToDouble(MM.ToString()) / 1000, 5); } /// /// /// /// /// public static double AngleToRad(object angle) { return Math.Round(Convert.ToDouble(angle.ToString()) * Math.PI / 180, 5); } /// /// /// /// /// public static double RadToAngle(object rad) { return Math.Round(Convert.ToDouble(rad.ToString()) * 180 / Math.PI, 5); } /// /// /// /// /// public static double MToMM(string M) { return Math.Round(Convert.ToDouble(M) * 1000, 2); } /// /// /// /// /// public static double MMToM(string MM) { return Math.Round(Convert.ToDouble(MM) / 1000, 5); } /// /// /// /// /// public static double AngleToRad(string angle) { return Math.Round(Convert.ToDouble(angle) * Math.PI / 180, 5); } /// /// /// /// /// public static double RadToAngle(string rad) { return Math.Round(Convert.ToDouble(rad) * 180 / Math.PI, 5); } /// /// /// /// /// public static double MToMM(double M) { return Math.Round(M * 1000, 2); } /// /// /// /// /// public static double MMToM(double MM) { return Math.Round(MM / 1000, 5); } /// /// /// /// /// public static double AngleToRad(double angle) { return Math.Round(angle * Math.PI / 180, 5); } /// /// /// /// /// public static double RadToAngle(double rad) { return Math.Round(rad * 180 / Math.PI, 5); } /// /// 坐标系的转换 /// ThreeJsToMatlab /// 原则:Y、Z互换,且Y取负方向 /// 2020.10.19 /// /// /// public static double[] ThreeJsToMatlab__Y_Z(double[] threePosition) { double[] matlabPosition = new double[6]; matlabPosition[0] = threePosition[0]; matlabPosition[1] = threePosition[2] * (-1); matlabPosition[2] = threePosition[1]; matlabPosition[3] = threePosition[3]; matlabPosition[4] = threePosition[4]; matlabPosition[5] = threePosition[5]; return matlabPosition; } /// /// 坐标系的转换 /// ThreeJsToMatlab /// /// /// public static double[] ThreeJsToKdl(double[] threePosition) { double[] matlabPosition = new double[6]; //// 2020.10.19 原则:当时好用的变换 //matlabPosition[0] = threePosition[2] * (-1); //matlabPosition[1] = threePosition[0] * (-1); //matlabPosition[2] = threePosition[1]; //matlabPosition[3] = threePosition[5] * (-1); //matlabPosition[4] = threePosition[3] * (-1); //matlabPosition[5] = threePosition[4]; //// 2020.11.24 原则:不做变换 //matlabPosition[0] = threePosition[0]; //matlabPosition[1] = threePosition[1]; //matlabPosition[2] = threePosition[2]; //matlabPosition[3] = threePosition[3]; //matlabPosition[4] = threePosition[4]; //matlabPosition[5] = threePosition[5]; //// 2020.11.25 原则: //matlabPosition[0] = threePosition[2] ; //matlabPosition[1] = threePosition[0] * (-1); //matlabPosition[2] = threePosition[1]; //matlabPosition[3] = threePosition[5] ; //matlabPosition[4] = threePosition[3] * (-1); //matlabPosition[5] = threePosition[4]; // 2020.11.25 原则:现在好用的 matlabPosition[0] = threePosition[2]; matlabPosition[1] = threePosition[0]; matlabPosition[2] = threePosition[1]; matlabPosition[3] = threePosition[5]; matlabPosition[4] = threePosition[3]; matlabPosition[5] = threePosition[4]; return matlabPosition; } /// /// 字符串 转换 双浮点 /// /// /// public static double[] StringArrayToDoubleArray(string[] arrayStr) { double[] arrayDouble = new double[arrayStr.Length]; for (int i = 0; i < arrayStr.Length; i++) arrayDouble[i] = Convert.ToDouble(arrayStr[i]); return arrayDouble; } /// /// obj 转换 双浮点 /// /// /// public static double[] ObjectArrayToDoubleArray(object[] arrayObj) { double[] arrayDouble = new double[arrayObj.Length]; for (int i = 0; i < arrayObj.Length; i++) arrayDouble[i] = Convert.ToDouble(arrayObj[i].ToString()); return arrayDouble; } /// /// 毫米转米 /// 角度转弧度 /// 10个值 /// 2021.2.26 /// /// public static double[] MMToM_AngleToRad_Ten(double[] p_Ten) { return new double[] { CVT.MMToM(p_Ten[0]), CVT.MMToM(p_Ten[1]), CVT.MMToM(p_Ten[2]), p_Ten[3], p_Ten[4], p_Ten[5], p_Ten[6], CVT.AngleToRad(p_Ten[7]), CVT.AngleToRad(p_Ten[8]), CVT.AngleToRad(p_Ten[9]) }; } /// /// 毫米转米 /// 角度转弧度 /// 7个值 /// 2021.2.26 /// /// public static double[] MMToM_AngleToRad_Seven(double[] p_Seven) { return new double[] { CVT.MMToM(p_Seven[0]), CVT.MMToM(p_Seven[1]), CVT.MMToM(p_Seven[2]), p_Seven[3], p_Seven[4], p_Seven[5], p_Seven[6] }; } /// /// 毫米转米 /// 角度转弧度 /// 6个值 /// 2021.2.26 /// /// public static double[] MMToM_AngleToRad_Six(double[] p_Six) { return new double[]{ CVT.MMToM(p_Six[0]), CVT.MMToM(p_Six[1]), CVT.MMToM(p_Six[2]), CVT.AngleToRad(p_Six[3]), CVT.AngleToRad(p_Six[4]), CVT.AngleToRad(p_Six[5])}; } /// /// 米转毫米 /// 弧度转角度 /// 10个值 /// 2021.2.26 /// /// public static double[] MToMM_RadToAngle_Ten(double[] p_Ten) { return new double[] { CVT.MToMM(p_Ten[0]), CVT.MToMM(p_Ten[1]), CVT.MToMM(p_Ten[2]), p_Ten[3], p_Ten[4], p_Ten[5], p_Ten[6], CVT.RadToAngle(p_Ten[7]), CVT.RadToAngle(p_Ten[8]), CVT.RadToAngle(p_Ten[9]) }; } /// /// 米转毫米 /// 弧度转角度 /// 7个值 /// 2021.2.26 /// /// public static double[] MToMM_RadToAngle_Seven(double[] p_Seven) { return new double[] { CVT.MToMM(p_Seven[0]), CVT.MToMM(p_Seven[1]), CVT.MToMM(p_Seven[2]), p_Seven[3], p_Seven[4], p_Seven[5], p_Seven[6] }; } /// /// 米转毫米 /// 弧度转角度 /// 6个值 /// 2021.2.26 /// /// public static double[] MToMM_RadToAngle_Six(double[] p_Six) { return new double[]{ CVT.MToMM(p_Six[0]), CVT.MToMM(p_Six[1]), CVT.MToMM(p_Six[2]), CVT.RadToAngle(p_Six[3]), CVT.RadToAngle(p_Six[4]), CVT.RadToAngle(p_Six[5]) }; } /// /// /// /// /// public static List RadToAngle(List radList) { var angleList = new List(); foreach (double rad in radList) { angleList.Add(Math.Round(rad * 180 / Math.PI, 5)); } return angleList; } /// /// /// /// /// public static List AngleToRad(List angleList) { var radList = new List(); foreach (double angle in angleList) { radList.Add(Math.Round(angle * Math.PI / 180, 5)); } return radList; } }