我试图在Julia中绕x,y或z轴以90度为增量旋转一个三维数组,就像它代表3D空间中的物体一样。 实际上,我想知道是否有一种方法可以沿着x,y和/或z轴以90度的增量旋转数组。
在2D中,如果我逆时针旋转,它会是这样的...
1 2 3 3 6 9
4 5 6 -----> 2 5 8
7 8 9 1 4 7
我希望相同的逻辑也可以应用于3D领域。
任何帮助都将不胜感激。
我试图在Julia中绕x,y或z轴以90度为增量旋转一个三维数组,就像它代表3D空间中的物体一样。 实际上,我想知道是否有一种方法可以沿着x,y和/或z轴以90度的增量旋转数组。
在2D中,如果我逆时针旋转,它会是这样的...
1 2 3 3 6 9
4 5 6 -----> 2 5 8
7 8 9 1 4 7
我希望相同的逻辑也可以应用于3D领域。
任何帮助都将不胜感激。
对于二维矩阵,您可以使用rotl90
、rotr90
和rot180
等函数。这些函数可以与mapslices
组合使用,以获得所需的效果。下面是一个示例,在第3
维的每个切片上旋转第1
和2
维。
julia> A=collect(reshape(1:27,3,3,3))
3×3×3 Array{Int64,3}:
[:, :, 1] =
1 4 7
2 5 8
3 6 9
[:, :, 2] =
10 13 16
11 14 17
12 15 18
[:, :, 3] =
19 22 25
20 23 26
21 24 27
julia> mapslices(rotr90,A,dims=[1,2])
3×3×3 Array{Int64,3}:
[:, :, 1] =
3 2 1
6 5 4
9 8 7
[:, :, 2] =
12 11 10
15 14 13
18 17 16
[:, :, 3] =
21 20 19
24 23 22
27 26 25