/// <summary> /// Translates the affine transform by the given translation vector, in the order specified. /// </summary> /// <param name="translateVector"> /// A vector whose components will translate the /// transform in the corresponding dimension. /// </param> /// <param name="order">The order to apply the transform in.</param> public void Translate(Vector translateVector, MatrixOperationOrder order) { AffineMatrix translateMatrix = new AffineMatrix(Format, RowCount); MatrixProcessor.Translate(translateMatrix, translateVector); Matrix result; if (Format == MatrixFormat.RowMajor) { if (order == MatrixOperationOrder.Append) { result = MatrixProcessor.Multiply(this, translateMatrix); } else { result = MatrixProcessor.Multiply(translateMatrix, this); } } else { if (order == MatrixOperationOrder.Append) { result = MatrixProcessor.Multiply(translateMatrix, this); } else { result = MatrixProcessor.Multiply(this, translateMatrix); } } MatrixProcessor.SetMatrix(result, this); }
/// <summary> /// Translates the affine transform by the given amount /// in each dimension. /// </summary> /// <param name="amount">Amount to translate by.</param> /// <param name="order">The order to apply the transform in.</param> public void Translate(DoubleComponent amount, MatrixOperationOrder order) { Vector translateVector = new Vector(RowCount - 1); for (Int32 i = 0; i < translateVector.ComponentCount; i++) { translateVector[i] = amount; } AffineMatrix translateMatrix = new AffineMatrix(Format, RowCount); MatrixProcessor.Translate(translateMatrix, translateVector); Matrix result; if (order == MatrixOperationOrder.Append) { result = MatrixProcessor.Multiply(translateMatrix, this); } else { result = MatrixProcessor.Multiply(this, translateMatrix); } MatrixProcessor.SetMatrix(result, this); }