コード例 #1
0
 /// <summary>
 /// Returns the specified submatrix of the given matrix.
 /// </summary>
 /// <param name="matrix">The matrix whose submatrix is to returned.</param>
 /// <param name="row">The row to be removed.</param>
 /// <param name="column">The column to be removed.</param>
 public static Vector3d Submatrix(Matrix2x4d matrix, int row, int column)
 {
     if (row < 0 || row > 1)
     {
         throw new ArgumentOutOfRangeException("row", "Rows for Matrix2x4d run from 0 to 1, inclusive.");
     }
     if (column < 0 || column > 3)
     {
         throw new ArgumentOutOfRangeException("column", "Columns for Matrix2x4d run from 0 to 3, inclusive.");
     }
     if (row == 0 && column == 0)
     {
         return(new Vector3d(matrix.M22, matrix.M23, matrix.M24));
     }
     else if (row == 0 && column == 1)
     {
         return(new Vector3d(matrix.M21, matrix.M23, matrix.M24));
     }
     else if (row == 0 && column == 2)
     {
         return(new Vector3d(matrix.M21, matrix.M22, matrix.M24));
     }
     else if (row == 0 && column == 3)
     {
         return(new Vector3d(matrix.M21, matrix.M22, matrix.M23));
     }
     else if (row == 1 && column == 0)
     {
         return(new Vector3d(matrix.M12, matrix.M13, matrix.M14));
     }
     else if (row == 1 && column == 1)
     {
         return(new Vector3d(matrix.M11, matrix.M13, matrix.M14));
     }
     else if (row == 1 && column == 2)
     {
         return(new Vector3d(matrix.M11, matrix.M12, matrix.M14));
     }
     else
     {
         return(new Vector3d(matrix.M11, matrix.M12, matrix.M13));
     }
 }
コード例 #2
0
 /// <summary>
 /// Returns a matrix where each element is the integral part of the specified element.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <returns>The integral of value.</returns>
 public static Matrix2x4d Truncate(Matrix2x4d value)
 {
     return(new Matrix2x4d(Functions.Truncate(value.M11), Functions.Truncate(value.M21), Functions.Truncate(value.M12), Functions.Truncate(value.M22), Functions.Truncate(value.M13), Functions.Truncate(value.M23), Functions.Truncate(value.M14), Functions.Truncate(value.M24)));
 }
コード例 #3
0
 /// <summary>
 /// Returns a matrix where each element is the smallest integral value that
 /// is greater than or equal to the specified element.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <returns>The ceiling of value.</returns>
 public static Matrix2x4d Ceiling(Matrix2x4d value)
 {
     return(new Matrix2x4d(Functions.Ceiling(value.M11), Functions.Ceiling(value.M21), Functions.Ceiling(value.M12), Functions.Ceiling(value.M22), Functions.Ceiling(value.M13), Functions.Ceiling(value.M23), Functions.Ceiling(value.M14), Functions.Ceiling(value.M24)));
 }
コード例 #4
0
 /// <summary>
 /// Constrains each element to a given range.
 /// </summary>
 /// <param name="value">A matrix to constrain.</param>
 /// <param name="min">The minimum values for each element.</param>
 /// <param name="max">The maximum values for each element.</param>
 /// <returns>A matrix with each element constrained to the given range.</returns>
 public static Matrix2x4d Clamp(Matrix2x4d value, Matrix2x4d min, Matrix2x4d max)
 {
     return(new Matrix2x4d(Functions.Clamp(value.M11, min.M11, max.M11), Functions.Clamp(value.M21, min.M21, max.M21), Functions.Clamp(value.M12, min.M12, max.M12), Functions.Clamp(value.M22, min.M22, max.M22), Functions.Clamp(value.M13, min.M13, max.M13), Functions.Clamp(value.M23, min.M23, max.M23), Functions.Clamp(value.M14, min.M14, max.M14), Functions.Clamp(value.M24, min.M24, max.M24)));
 }
コード例 #5
0
 public static Matrix2x4d Add(Matrix2x4d left, Matrix2x4d right)
 {
     return(new Matrix2x4d(left.M11 + right.M11, left.M21 + right.M21, left.M12 + right.M12, left.M22 + right.M22, left.M13 + right.M13, left.M23 + right.M23, left.M14 + right.M14, left.M24 + right.M24));
 }
コード例 #6
0
 /// <summary>
 /// Calculates the transpose of the specified matrix.
 /// </summary>
 /// <param name="matrix">The matrix whose transpose is to be calculated.</param>
 /// <returns>The transpose of the specified matrix.</returns>
 public static Matrix4x2d Transpose(Matrix2x4d matrix)
 {
     return(new Matrix4x2d(matrix.M11, matrix.M12, matrix.M13, matrix.M14, matrix.M21, matrix.M22, matrix.M23, matrix.M24));
 }
コード例 #7
0
 /// <summary>
 /// Calculates the reciprocal of each element in the matrix.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <returns>A matrix with the reciprocal of each of values elements.</returns>
 public static Matrix2x4d Reciprocal(Matrix2x4d value)
 {
     return(new Matrix2x4d(1 / value.M11, 1 / value.M21, 1 / value.M12, 1 / value.M22, 1 / value.M13, 1 / value.M23, 1 / value.M14, 1 / value.M24));
 }
コード例 #8
0
 /// <summary>
 /// Returns a matrix where each element is rounded to the nearest integral value.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <param name="digits">The number of fractional digits in the return value.</param>
 /// <returns>The result of rounding value.</returns>
 public static Matrix2x4d Round(Matrix2x4d value, int digits)
 {
     return(new Matrix2x4d(Functions.Round(value.M11, digits), Functions.Round(value.M21, digits), Functions.Round(value.M12, digits), Functions.Round(value.M22, digits), Functions.Round(value.M13, digits), Functions.Round(value.M23, digits), Functions.Round(value.M14, digits), Functions.Round(value.M24, digits)));
 }
コード例 #9
0
 /// <summary>
 /// Determines whether any element of a matrix is non-zero.
 /// </summary>
 /// <param name="value">A vector.</param>
 /// <returns>true if any elements are non-zero; false otherwise.</returns>
 public static bool Any(Matrix2x4d value)
 {
     return(value.M11 != 0 || value.M21 != 0 || value.M12 != 0 || value.M22 != 0 || value.M13 != 0 || value.M23 != 0 || value.M14 != 0 || value.M24 != 0);
 }
コード例 #10
0
 /// <summary>
 /// Determines whether all elements of a matrix satisfy a condition.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <param name="predicate">A function to test each element for a condition.</param>
 /// <returns>true if every element of the matrix passes the test in the specified
 /// predicate; otherwise, false.</returns>
 public static bool All(Matrix2x4d value, Predicate <double> predicate)
 {
     return(predicate(value.M11) && predicate(value.M21) && predicate(value.M12) && predicate(value.M22) && predicate(value.M13) && predicate(value.M23) && predicate(value.M14) && predicate(value.M24));
 }
コード例 #11
0
 public static Matrix2x4d Divide(Matrix2x4d matrix, double scalar)
 {
     return(new Matrix2x4d(matrix.M11 / scalar, matrix.M21 / scalar, matrix.M12 / scalar, matrix.M22 / scalar, matrix.M13 / scalar, matrix.M23 / scalar, matrix.M14 / scalar, matrix.M24 / scalar));
 }
コード例 #12
0
 public static Matrix2x4d Multiply(Matrix2x4d matrix, double scalar)
 {
     return(new Matrix2x4d(matrix.M11 * scalar, matrix.M21 * scalar, matrix.M12 * scalar, matrix.M22 * scalar, matrix.M13 * scalar, matrix.M23 * scalar, matrix.M14 * scalar, matrix.M24 * scalar));
 }
コード例 #13
0
 public static Matrix2x4d Multiply(Matrix2x4d left, Matrix4x4d right)
 {
     return(new Matrix2x4d(left.M11 * right.M11 + left.M12 * right.M21 + left.M13 * right.M31 + left.M14 * right.M41, left.M21 * right.M11 + left.M22 * right.M21 + left.M23 * right.M31 + left.M24 * right.M41, left.M11 * right.M12 + left.M12 * right.M22 + left.M13 * right.M32 + left.M14 * right.M42, left.M21 * right.M12 + left.M22 * right.M22 + left.M23 * right.M32 + left.M24 * right.M42, left.M11 * right.M13 + left.M12 * right.M23 + left.M13 * right.M33 + left.M14 * right.M43, left.M21 * right.M13 + left.M22 * right.M23 + left.M23 * right.M33 + left.M24 * right.M43, left.M11 * right.M14 + left.M12 * right.M24 + left.M13 * right.M34 + left.M14 * right.M44, left.M21 * right.M14 + left.M22 * right.M24 + left.M23 * right.M34 + left.M24 * right.M44));
 }
コード例 #14
0
 public static Matrix2x2d Multiply(Matrix2x4d left, Matrix4x2d right)
 {
     return(new Matrix2x2d(left.M11 * right.M11 + left.M12 * right.M21 + left.M13 * right.M31 + left.M14 * right.M41, left.M21 * right.M11 + left.M22 * right.M21 + left.M23 * right.M31 + left.M24 * right.M41, left.M11 * right.M12 + left.M12 * right.M22 + left.M13 * right.M32 + left.M14 * right.M42, left.M21 * right.M12 + left.M22 * right.M22 + left.M23 * right.M32 + left.M24 * right.M42));
 }
コード例 #15
0
 public static Matrix2x4d Subtract(Matrix2x4d left, Matrix2x4d right)
 {
     return(new Matrix2x4d(left.M11 - right.M11, left.M21 - right.M21, left.M12 - right.M12, left.M22 - right.M22, left.M13 - right.M13, left.M23 - right.M23, left.M14 - right.M14, left.M24 - right.M24));
 }
コード例 #16
0
 /// <summary>
 /// Returns a matrix where each element is the fractional part of the specified element.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <returns>The fractional of value.</returns>
 public static Matrix2x4d Fractional(Matrix2x4d value)
 {
     return(new Matrix2x4d(Functions.Fractional(value.M11), Functions.Fractional(value.M21), Functions.Fractional(value.M12), Functions.Fractional(value.M22), Functions.Fractional(value.M13), Functions.Fractional(value.M23), Functions.Fractional(value.M14), Functions.Fractional(value.M24)));
 }
コード例 #17
0
 /// <summary>
 /// Returns a matrix where each element is rounded to the nearest integral value.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <returns>The result of rounding value.</returns>
 public static Matrix2x4d Round(Matrix2x4d value)
 {
     return(new Matrix2x4d(Functions.Round(value.M11), Functions.Round(value.M21), Functions.Round(value.M12), Functions.Round(value.M22), Functions.Round(value.M13), Functions.Round(value.M23), Functions.Round(value.M14), Functions.Round(value.M24)));
 }
コード例 #18
0
 /// <summary>
 /// Determines whether any elements of a matrix satisfy a condition.
 /// </summary>
 /// <param name="value">A vector.</param>
 /// <param name="predicate">A function to test each element for a condition.</param>
 /// <returns>true if any element of the matrix passes the test in the specified
 /// predicate; otherwise, false.</returns>
 public static bool Any(Matrix2x4d value, Predicate <double> predicate)
 {
     return(predicate(value.M11) || predicate(value.M21) || predicate(value.M12) || predicate(value.M22) || predicate(value.M13) || predicate(value.M23) || predicate(value.M14) || predicate(value.M24));
 }
コード例 #19
0
 /// <summary>
 /// Returns a matrix where each element is rounded to the nearest integral value.
 /// </summary>
 /// <param name="value">A matrix.</param>
 /// <param name="digits">The number of fractional digits in the return value.</param>
 /// <param name="mode">Specification for how to round value if it is midway between two other numbers.</param>
 /// <returns>The result of rounding value.</returns>
 public static Matrix2x4d Round(Matrix2x4d value, int digits, MidpointRounding mode)
 {
     return(new Matrix2x4d(Functions.Round(value.M11, digits, mode), Functions.Round(value.M21, digits, mode), Functions.Round(value.M12, digits, mode), Functions.Round(value.M22, digits, mode), Functions.Round(value.M13, digits, mode), Functions.Round(value.M23, digits, mode), Functions.Round(value.M14, digits, mode), Functions.Round(value.M24, digits, mode)));
 }
コード例 #20
0
 /// <summary>
 /// Maps the elements of a matrix and returns the result.
 /// </summary>
 /// <param name="value">The matrix to map.</param>
 /// <param name="mapping">A mapping function to apply to each element.</param>
 /// <returns>The result of mapping each element of value.</returns>
 public static Matrix2x4f Map(Matrix2x4d value, Func <double, float> mapping)
 {
     return(new Matrix2x4f(mapping(value.M11), mapping(value.M21), mapping(value.M12), mapping(value.M22), mapping(value.M13), mapping(value.M23), mapping(value.M14), mapping(value.M24)));
 }
コード例 #21
0
 /// <summary>
 /// Multiplys the elements of two matrices and returns the result.
 /// </summary>
 /// <param name="left">The first matrix to modulate.</param>
 /// <param name="right">The second matrix to modulate.</param>
 /// <returns>The result of multiplying each element of left by the matching element in right.</returns>
 public static Matrix2x4d Modulate(Matrix2x4d left, Matrix2x4d right)
 {
     return(new Matrix2x4d(left.M11 * right.M11, left.M21 * right.M21, left.M12 * right.M12, left.M22 * right.M22, left.M13 * right.M13, left.M23 * right.M23, left.M14 * right.M14, left.M24 * right.M24));
 }
コード例 #22
0
 /// <summary>
 /// Returns a matrix that contains the highest value from each pair of elements.
 /// </summary>
 /// <param name="value1">The first matrix.</param>
 /// <param name="value2">The second matrix.</param>
 /// <returns>The highest of each element in left and the matching element in right.</returns>
 public static Matrix2x4d Max(Matrix2x4d value1, Matrix2x4d value2)
 {
     return(new Matrix2x4d(Functions.Max(value1.M11, value2.M11), Functions.Max(value1.M21, value2.M21), Functions.Max(value1.M12, value2.M12), Functions.Max(value1.M22, value2.M22), Functions.Max(value1.M13, value2.M13), Functions.Max(value1.M23, value2.M23), Functions.Max(value1.M14, value2.M14), Functions.Max(value1.M24, value2.M24)));
 }
コード例 #23
0
ファイル: Matrix3x2d.cs プロジェクト: bonomali/Ibasa
 public static Matrix3x4d Multiply(Matrix3x2d left, Matrix2x4d right)
 {
     return(new Matrix3x4d(left.M11 * right.M11 + left.M12 * right.M21, left.M21 * right.M11 + left.M22 * right.M21, left.M31 * right.M11 + left.M32 * right.M21, left.M11 * right.M12 + left.M12 * right.M22, left.M21 * right.M12 + left.M22 * right.M22, left.M31 * right.M12 + left.M32 * right.M22, left.M11 * right.M13 + left.M12 * right.M23, left.M21 * right.M13 + left.M22 * right.M23, left.M31 * right.M13 + left.M32 * right.M23, left.M11 * right.M14 + left.M12 * right.M24, left.M21 * right.M14 + left.M22 * right.M24, left.M31 * right.M14 + left.M32 * right.M24));
 }
コード例 #24
0
 public static Matrix2x4d Negate(Matrix2x4d value)
 {
     return(new Matrix2x4d(-value.M11, -value.M21, -value.M12, -value.M22, -value.M13, -value.M23, -value.M14, -value.M24));
 }