|
51 | 51 | //! ``` |
52 | 52 | //! use ndarray::prelude::*; |
53 | 53 | //! |
54 | | -//! fn main() { |
55 | | -//! let nelems = 4; |
56 | | -//! let bunge = Array::ones((3, nelems)); |
57 | | -//! |
58 | | -//! let s1 = bunge.slice(s![0, ..]).mapv(f64::sin); |
59 | | -//! let c1 = bunge.slice(s![0, ..]).mapv(f64::cos); |
60 | | -//! let s2 = bunge.slice(s![1, ..]).mapv(f64::sin); |
61 | | -//! let c2 = bunge.slice(s![1, ..]).mapv(f64::cos); |
62 | | -//! let s3 = bunge.slice(s![2, ..]).mapv(f64::sin); |
63 | | -//! let c3 = bunge.slice(s![2, ..]).mapv(f64::cos); |
64 | | -//! |
65 | | -//! let mut rmat = Array::zeros((3, 3, nelems).f()); |
66 | | -//! for i in 0..nelems { |
67 | | -//! rmat[[0, 0, i]] = c1[i] * c3[i] - s1[i] * s3[i] * c2[i]; |
68 | | -//! rmat[[0, 1, i]] = -c1[i] * s3[i] - s1[i] * c2[i] * c3[i]; |
69 | | -//! rmat[[0, 2, i]] = s1[i] * s2[i]; |
70 | | -//! |
71 | | -//! rmat[[1, 0, i]] = s1[i] * c3[i] + c1[i] * c2[i] * s3[i]; |
72 | | -//! rmat[[1, 1, i]] = -s1[i] * s3[i] + c1[i] * c2[i] * c3[i]; |
73 | | -//! rmat[[1, 2, i]] = -c1[i] * s2[i]; |
74 | | -//! |
75 | | -//! rmat[[2, 0, i]] = s2[i] * s3[i]; |
76 | | -//! rmat[[2, 1, i]] = s2[i] * c3[i]; |
77 | | -//! rmat[[2, 2, i]] = c2[i]; |
78 | | -//! } |
79 | | -//! |
80 | | -//! let eye2d = Array::eye(3); |
81 | | -//! |
82 | | -//! let mut rotated = Array::zeros((3, 3, nelems).f()); |
83 | | -//! for i in 0..nelems { |
84 | | -//! rotated |
85 | | -//! .slice_mut(s![.., .., i]) |
86 | | -//! .assign(&rmat.slice(s![.., .., i]).dot(&eye2d)); |
87 | | -//! } |
| 54 | +//! let nelems = 4; |
| 55 | +//! let bunge = Array::ones((3, nelems)); |
| 56 | +//! |
| 57 | +//! let s1 = bunge.slice(s![0, ..]).mapv(f64::sin); |
| 58 | +//! let c1 = bunge.slice(s![0, ..]).mapv(f64::cos); |
| 59 | +//! let s2 = bunge.slice(s![1, ..]).mapv(f64::sin); |
| 60 | +//! let c2 = bunge.slice(s![1, ..]).mapv(f64::cos); |
| 61 | +//! let s3 = bunge.slice(s![2, ..]).mapv(f64::sin); |
| 62 | +//! let c3 = bunge.slice(s![2, ..]).mapv(f64::cos); |
| 63 | +//! |
| 64 | +//! let mut rmat = Array::zeros((3, 3, nelems).f()); |
| 65 | +//! for i in 0..nelems { |
| 66 | +//! rmat[[0, 0, i]] = c1[i] * c3[i] - s1[i] * s3[i] * c2[i]; |
| 67 | +//! rmat[[0, 1, i]] = -c1[i] * s3[i] - s1[i] * c2[i] * c3[i]; |
| 68 | +//! rmat[[0, 2, i]] = s1[i] * s2[i]; |
| 69 | +//! |
| 70 | +//! rmat[[1, 0, i]] = s1[i] * c3[i] + c1[i] * c2[i] * s3[i]; |
| 71 | +//! rmat[[1, 1, i]] = -s1[i] * s3[i] + c1[i] * c2[i] * c3[i]; |
| 72 | +//! rmat[[1, 2, i]] = -c1[i] * s2[i]; |
| 73 | +//! |
| 74 | +//! rmat[[2, 0, i]] = s2[i] * s3[i]; |
| 75 | +//! rmat[[2, 1, i]] = s2[i] * c3[i]; |
| 76 | +//! rmat[[2, 2, i]] = c2[i]; |
| 77 | +//! } |
| 78 | +//! |
| 79 | +//! let eye2d = Array::eye(3); |
| 80 | +//! |
| 81 | +//! let mut rotated = Array::zeros((3, 3, nelems).f()); |
| 82 | +//! for i in 0..nelems { |
| 83 | +//! rotated |
| 84 | +//! .slice_mut(s![.., .., i]) |
| 85 | +//! .assign(&rmat.slice(s![.., .., i]).dot(&eye2d)); |
88 | 86 | //! } |
89 | 87 | //! ``` |
90 | 88 | //! |
|
96 | 94 | //! ``` |
97 | 95 | //! use ndarray::prelude::*; |
98 | 96 | //! |
99 | | -//! fn main() { |
100 | | -//! let nelems = 4; |
101 | | -//! let bunge = Array2::<f64>::ones((3, nelems)); |
102 | | -//! |
103 | | -//! let mut rmat = Array::zeros((3, 3, nelems).f()); |
104 | | -//! azip!((mut rmat in rmat.axis_iter_mut(Axis(2)), bunge in bunge.axis_iter(Axis(1))) { |
105 | | -//! let s1 = bunge[0].sin(); |
106 | | -//! let c1 = bunge[0].cos(); |
107 | | -//! let s2 = bunge[1].sin(); |
108 | | -//! let c2 = bunge[1].cos(); |
109 | | -//! let s3 = bunge[2].sin(); |
110 | | -//! let c3 = bunge[2].cos(); |
111 | | -//! |
112 | | -//! rmat[[0, 0]] = c1 * c3 - s1 * s3 * c2; |
113 | | -//! rmat[[0, 1]] = -c1 * s3 - s1 * c2 * c3; |
114 | | -//! rmat[[0, 2]] = s1 * s2; |
115 | | -//! |
116 | | -//! rmat[[1, 0]] = s1 * c3 + c1 * c2 * s3; |
117 | | -//! rmat[[1, 1]] = -s1 * s3 + c1 * c2 * c3; |
118 | | -//! rmat[[1, 2]] = -c1 * s2; |
119 | | -//! |
120 | | -//! rmat[[2, 0]] = s2 * s3; |
121 | | -//! rmat[[2, 1]] = s2 * c3; |
122 | | -//! rmat[[2, 2]] = c2; |
123 | | -//! }); |
124 | | -//! |
125 | | -//! let eye2d = Array2::<f64>::eye(3); |
126 | | -//! |
127 | | -//! let mut rotated = Array3::<f64>::zeros((3, 3, nelems).f()); |
128 | | -//! azip!((mut rotated in rotated.axis_iter_mut(Axis(2)), rmat in rmat.axis_iter(Axis(2))) { |
129 | | -//! rotated.assign(&rmat.dot(&eye2d)); |
130 | | -//! }); |
131 | | -//! } |
| 97 | +//! let nelems = 4; |
| 98 | +//! let bunge = Array2::<f64>::ones((3, nelems)); |
| 99 | +//! |
| 100 | +//! let mut rmat = Array::zeros((3, 3, nelems).f()); |
| 101 | +//! azip!((mut rmat in rmat.axis_iter_mut(Axis(2)), bunge in bunge.axis_iter(Axis(1))) { |
| 102 | +//! let s1 = bunge[0].sin(); |
| 103 | +//! let c1 = bunge[0].cos(); |
| 104 | +//! let s2 = bunge[1].sin(); |
| 105 | +//! let c2 = bunge[1].cos(); |
| 106 | +//! let s3 = bunge[2].sin(); |
| 107 | +//! let c3 = bunge[2].cos(); |
| 108 | +//! |
| 109 | +//! rmat[[0, 0]] = c1 * c3 - s1 * s3 * c2; |
| 110 | +//! rmat[[0, 1]] = -c1 * s3 - s1 * c2 * c3; |
| 111 | +//! rmat[[0, 2]] = s1 * s2; |
| 112 | +//! |
| 113 | +//! rmat[[1, 0]] = s1 * c3 + c1 * c2 * s3; |
| 114 | +//! rmat[[1, 1]] = -s1 * s3 + c1 * c2 * c3; |
| 115 | +//! rmat[[1, 2]] = -c1 * s2; |
| 116 | +//! |
| 117 | +//! rmat[[2, 0]] = s2 * s3; |
| 118 | +//! rmat[[2, 1]] = s2 * c3; |
| 119 | +//! rmat[[2, 2]] = c2; |
| 120 | +//! }); |
| 121 | +//! |
| 122 | +//! let eye2d = Array2::<f64>::eye(3); |
| 123 | +//! |
| 124 | +//! let mut rotated = Array3::<f64>::zeros((3, 3, nelems).f()); |
| 125 | +//! azip!((mut rotated in rotated.axis_iter_mut(Axis(2)), rmat in rmat.axis_iter(Axis(2))) { |
| 126 | +//! rotated.assign(&rmat.dot(&eye2d)); |
| 127 | +//! }); |
132 | 128 | //! ``` |
0 commit comments