|
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