示例#1
0
        internal static Node[,] BuildRotationMatrix(CartesianDimension dimension, double radians)
        {
            double cos = Math.Cos(radians);
            double sin = Math.Sin(radians);

            switch (dimension)
            {
            case CartesianDimension.X:
                return(genNodes(new double[, ]
                {
                    { 1, 0, 0 },
                    { 0, cos, -sin },
                    { 0, sin, cos }
                }));

            case CartesianDimension.Y:
                return(genNodes(new double[, ]
                {
                    { cos, 0, sin },
                    { 0, 1, 0 },
                    { -sin, 0, cos }
                }));

            case CartesianDimension.Z:
                return(genNodes(new double[, ]
                {
                    { cos, -sin, 0 },
                    { sin, cos, 0 },
                    { 0, 0, 1 }
                }));

            default:
                return(null);
            }
        }
示例#2
0
 public RotationMatrix(CartesianDimension dimension, double radians, Frame baseFrame, Frame toFrame) : base(
         BuildRotationMatrix(dimension, radians), baseFrame, toFrame)
 {
     if (radians.Equals(double.NaN) || radians.Equals(double.NegativeInfinity) ||
         radians.Equals(double.PositiveInfinity))
     {
         throw new ArgumentException("must be a valid double", nameof(radians));
     }
 }
示例#3
0
 public RotationMatrix(CartesianDimension dimension, double radians) : this(dimension, radians, null, null)
 {
 }