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;
}
}