parent
1706f9c15f
commit
99b54465c7
|
@ -4,6 +4,11 @@ documented here.
|
||||||
|
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [0.17.0] - WIP
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Add `.copy_from_slice` to copy matrix components from a slice in column-major order.
|
||||||
|
|
||||||
## [0.16.0]
|
## [0.16.0]
|
||||||
All dependencies have been updated to their latest versions.
|
All dependencies have been updated to their latest versions.
|
||||||
|
|
||||||
|
|
|
@ -475,6 +475,27 @@ impl<N: Scalar, R: Dim, C: Dim, S: StorageMut<N, R, C>> Matrix<N, R, C, S> {
|
||||||
unsafe { self.swap_unchecked(row_cols1, row_cols2) }
|
unsafe { self.swap_unchecked(row_cols1, row_cols2) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Fills this matrix with the content of a slice. Both must hold the same number of elements.
|
||||||
|
///
|
||||||
|
/// The components of the slice are assumed to be ordered in column-major order.
|
||||||
|
#[inline]
|
||||||
|
pub fn copy_from_slice(&mut self, slice: &[N]) {
|
||||||
|
let (nrows, ncols) = self.shape();
|
||||||
|
|
||||||
|
assert!(
|
||||||
|
nrows * ncols == slice.len(),
|
||||||
|
"The slice must contain the same number of elements as the matrix."
|
||||||
|
);
|
||||||
|
|
||||||
|
for j in 0..ncols {
|
||||||
|
for i in 0..nrows {
|
||||||
|
unsafe {
|
||||||
|
*self.get_unchecked_mut(i, j) = *slice.get_unchecked(i + j * nrows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Fills this matrix with the content of another one. Both must have the same shape.
|
/// Fills this matrix with the content of another one. Both must have the same shape.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn copy_from<R2, C2, SB>(&mut self, other: &Matrix<N, R2, C2, SB>)
|
pub fn copy_from<R2, C2, SB>(&mut self, other: &Matrix<N, R2, C2, SB>)
|
||||||
|
|
|
@ -239,6 +239,21 @@ fn from_rows_with_different_dimensions() {
|
||||||
let _ = DMatrix::from_columns(columns);
|
let _ = DMatrix::from_columns(columns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn copy_from_slice() {
|
||||||
|
let mut a = Matrix3::zeros();
|
||||||
|
let data = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ];
|
||||||
|
let expected_a = Matrix3::new(
|
||||||
|
1.0, 4.0, 7.0,
|
||||||
|
2.0, 5.0, 8.0,
|
||||||
|
3.0, 6.0, 9.0
|
||||||
|
);
|
||||||
|
|
||||||
|
a.copy_from_slice(&data);
|
||||||
|
|
||||||
|
assert_eq!(a, expected_a);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn to_homogeneous() {
|
fn to_homogeneous() {
|
||||||
let a = Vector3::new(1.0, 2.0, 3.0);
|
let a = Vector3::new(1.0, 2.0, 3.0);
|
||||||
|
|
Loading…
Reference in New Issue