/// /// UVW 类型数据,通常用于XYR增量转UVW增量 /// public class DataUVW {
#region Public-Members private double R {
get; set; } = 50; private double θx1 {
get; set; } = 90 * Math.PI / 180; private double θx2 {
get; set; } = 270 * Math.PI / 180; private double θy1 {
get; set; } = 180 * Math.PI / 180; public double V {
get; set; } public double W {
get; set; } public double U {
get; set; } #endregion #region Private-Members #endregion #region Constructors-and-Factories /// /// XYR移动量转UVW移动量 /// /// Y方向移动量 /// X方向移动量 /// 旋转角度移动量 public DataUVW(double MoveY, double MoveX, double Rotatetion) {
Rotatetion *= -1; double rad = Rotatetion * Math.PI / 180; U = R * Math.Sin(rad + θy1) - R * Math.Sin(θy1); V = R * Math.Cos(rad + θx1) - R * Math.Cos(θx1); W = -1 * (R * Math.Cos(rad + θx2) - R * Math.Cos(θx2)); // W = R * Math.Cos(rad + θx2) - R * Math.Cos(θx2); double tempX1 = MoveX; double tempX2 = MoveX; double tempY1 = MoveY; U += tempY1; V += tempX1; W -= tempX2; } /// /// XYR移动量转UVW移动量 /// /// 封装的XYR体类 public DataUVW(DataXYR _dataXYR) {
_dataXYR.R *= -1; double rad = _dataXYR.R * Math.PI / 180; U = R * Math.Sin(rad + θy1) - R * Math.Sin(θy1); V = R * Math.Cos(rad + θx1) - R * Math.Cos(θx1); W = -1 * (R * Math.Cos(rad + θx2) - R * Math.Cos(θx2)); // W = R * Math.Cos(rad + θx2) - R * Math.Cos(θx2); double tempX1 = _dataXYR.X; double tempX2 = _dataXYR.X; double tempY1 = _dataXYR.Y; U += tempY1; V += tempX1; W -= tempX2; } public DataXYR ToXYR() {
return new DataXYR(U, V, W); } #endregion #region Public-Methods #endregion #region Private-Methods #endregion }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202373.html原文链接:https://javaforall.net
