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); } }
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)); } }
public RotationMatrix(CartesianDimension dimension, double radians) : this(dimension, radians, null, null) { }