4

如果你做一个 rotateX(180deg) rotateY(180deg) 它现在是颠倒的。因此,如果鼠标设置为在拖动时向上移动子元素,则该子元素现在将向下移动(取决于您的设置方式)。

-webkit-transform: rotateX(?deg) rotateY(?deg) rotateZ(?deg); // where does it point?

在此处输入图像描述

仅适用于 WEBKIT 的设置

看看小提琴(代码是一团糟,被剥离了)。在您的电脑显示器上画出 360 度的 tic 标记,排列成一个圆圈。你怎么知道箭头指向的是什么标记(假设盒子正好在圆的中心)?

涵盖基础知识的教程在这里这里

*edit - 正在使用的变换原点位于立方体的中心

4

1 回答 1

4

注意:下面的所有内容都假设您使用的是通过原点的向量,如本例所示。在您的原始示例中,向量额外从原点偏移了向量[0, 0, 60]。这会使计算稍微复杂化,所以我在解释中使用了简化版本。

您的矢量当前由球面坐标 欧拉角定义, 连续将旋转应用于预定义矢量。以下是如何使用旋转来确定最终向量的笛卡尔坐标:

  1. 假设您的向量是[0, 1, 0](假设箭头长 1 个单位并从原点开始)

  2. 通过将向量乘以此处描述的旋转矩阵以任意顺序应用 x、y 和 z 旋转,在每种情况下将 θ 替换为相应的角度:

                                                 在此处输入图像描述

  3. 结果向量是由指定的 x、y 和 z 旋转变换的原始向量

一旦你获得了旋转的向量,找到向量在 xy 平面上的投影就变得很容易了。

例如,考虑向量[10, 20, 30](笛卡尔坐标),在 xy 平面上的投影就是向量[10, 20, 0]。这个向量与水平面的夹角可以计算为:

tan -1 (20/10) = 1.107 rad(从正 x 轴逆时针)

                    = 63.43 度(从正 x 轴逆时针)

这意味着箭头指向第 63 个和第 64 个“刻度线”之间,从直接指向右侧的方向逆时针计数。

于 2012-12-14T16:09:23.157 回答