gpt4 book ai didi

rotation - Julia AffineTransforms 旋转角的符号

转载 作者:行者123 更新时间:2023-12-04 18:31:37 25 4
gpt4 key购买 nike

我正在使用 AffineTransforms 来旋转体积。我现在对旋转角度的符号感到困惑。对于右手系统,当向下看一个轴时,比如 Z 轴,逆时针旋转 XY 平面应该是正角。我定义了一个旋转矩阵 r = [0.0 -1. 0.0; 1.0 0.0 0.0; 0.0 0.0 1.0] ,即沿 Z 轴逆时针旋转 90 度。确实,r * [1 0 0]'给出 [ 0 1 0]' ,将 X 轴旋转到 Y 轴。

现在我定义一个体积 v。

3×3×3 Array{Float64,3}:
[:, :, 1] =
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

[:, :, 2] =
0.0 0.0 0.0
1.0 0.0 0.0
0.0 0.0 0.0

[:, :, 3] =
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

然后我定义 tfm = AffineTransform(r, vec([0 0 0])))tfm = tformrotate(vec([0 0 1]), π/2) 相同.
然后 transform(v, tfm) .旋转中心是输入数组中心。我有
3×3×3 Array{Float64,3}:
[:, :, 1] =
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

[:, :, 2] =
0.0 1.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

[:, :, 3] =
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0

这让我感到惊讶,因为输出是沿 Z 轴顺时针旋转 90 度。在我看来,这实际上是一个 -90 度的旋转。有人能指出我做错了什么吗?谢谢。

最佳答案

诚然,这也让我感到困惑。必须阅读 transform 的帮助和 TransformedArray再次。

首先,数组的打印顺序有点困惑,第一个索引显示在列中,但它是X轴,作为v的维度是 x,y,z按照这个顺序。

v , 我们有 v[2,1,2] == 1.0 .但是,默认情况下,transform使用数组的中心作为原点,所以 2,1,2相对于中心 (0,-1,0),即负 y 轴方向的单位向量。
transform 返回的数组具有在 x,y,z 处评估的值通过给出原始值 vtfm((x,y,z)) (见 ?TransformedArray)。

具体来说,我们有 transform(v,tfm)[1,2,2]v[tfm((-1,0,0))]这是 v[(0,-1,0)] (因为逆时针旋转 (-1,0,0) 是 (0,-1,0)),即 v[2,1,2]在不居中的 v指数。最后,v[2,1,2] == 1.0就像问题的输出一样。

坐标变换总是很棘手,很容易混淆变换和它们的逆。

希望这可以帮助。

关于rotation - Julia AffineTransforms 旋转角的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39985879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com