- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
如何将 rotateX(50deg) rotateY(20deg) rotateZ(15deg)
组合成简写 rotate3d()
?
最佳答案
rotateX(50deg)
等价于rotate3d(1, 0, 0, 50deg)
rotateY(20deg)
等价于rotate3d(0, 1, 0, 20deg)
rotateZ(15deg)
等价于rotate3d(0, 0, 1, 15deg)
所以...
rotateX(50deg) rotateY(20deg) rotateZ(15deg)
相当于
rotate3d(1, 0, 0, 50deg) rotate3d(0, 1, 0, 20deg) rotate3d(0, 0, 1, 15deg)
对于通用的 rotate3d(x, y, z, α)
,您有矩阵
在哪里
您现在获得了 3 个 rotate3d
变换中每一个的矩阵,并将它们相乘。而生成的矩阵就是生成的单个rotate3d
对应的矩阵。不确定从中提取 rotate3d
的值有多容易,但是提取单个 matrix3d
的值肯定很容易。
在第一种情况下(rotateX(50deg)
或 rotate3d(1, 0, 0, 50deg)
),你有:
x = 1
, y = 0
, z = 0
, α = 50deg
所以在这种情况下矩阵的第一行是 1 0 0 0
。
第二个是0 cos(50deg) -sin(50deg) 0
。
第三个0 sin(50deg) cos(50deg) 0
。
而第四个显然是 0 0 0 1
。
在第二种情况下,您有 x = 0
、y = 1
、z = 0
、α = 20deg
.
第一行:cos(20deg) 0 sin(20deg) 0
。
第二行:0 1 0 0
。
第三行:-sin(20) 0 cos(20deg) 0
。
第四个:0 0 0 1
在第三种情况下,您有 x = 0
、y = 0
、z = 1
、α = 15deg
.
第一行:cos(15deg) -sin(15deg) 0 0
。
第二行 sin(15deg) cos(15deg) 0 0
.
第三行和第四行分别是0 0 1 0
和0 0 0 1
。
注意:您可能已经注意到 rotateY 变换的 sin 值符号与其他两个变换不同。这不是计算错误。这样做的原因是,对于屏幕,y 轴指向下方,而不是上方。
因此,这些是您需要相乘的三个 4x4
矩阵,以便为生成的单个 rotate3d
变换获得 4x4
矩阵。正如我所说,我不确定获取 4 个值有多容易,但 4x4 矩阵中的 16 个元素恰好是 matrix3d
的 16 个参数,相当于链式转换。
编辑:
实际上,事实证明这很简单...您计算 rotate3d
矩阵的矩阵轨迹(对 Angular 线元素之和)。
4 - 2*2*(1 - cos(α))/2 = 4 - 2*(1 - cos(α)) = 2 + 2*cos(α)
然后计算三个 4x4
矩阵乘积的迹,将结果等同于 2 + 2*cos(α)
并提取 α
。然后计算 x
、y
、z
。
在这种特殊情况下,如果我计算正确,则由三个 4x4
矩阵乘积产生的矩阵轨迹将为:
T =
cos(20deg)*cos(15deg) +
cos(50deg)*cos(15deg) - sin(50deg)*sin(20deg)*cos(15deg) +
cos(50deg)*cos(20deg) +
1
所以 cos(α) = (T - 2)/2 = T/2 - 1
,这意味着 α = acos(T/2 - 1)
.
关于css - rotate3d 速记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26768138/
我有这部分代码将 div 围绕一个圆圈对齐: angle = 0; mangle = 0; for(i = 1; i<= count; i++) { $("#p" +i).css
为什么平衡得到一个AVL树的过程叫做旋转 ? (当你在它时,什么是 单 和 双 旋转?) 我的每一本教科书都公然使用这个词,没有任何解释。 最佳答案 这是在你的树的子树中改变根的操作,这是非常简单的操
作为进入处理的一个小作业,我必须编写一些代码才能获得以下内容: 使用 public void setup() { size(300,200); noFill(); rect(100,
我遇到了 Google Chrome 控制台报告的问题。我使用的是 Ubuntu 12.04。控制台中的问题是: Uncaught TypeError: Cannot read propert
在统一编辑器中,当我启用“Pivot”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“Center”时,游戏对象将围绕“中心点”旋转 但是如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这是我的场
rotate() 算法会从左边选择序列的元素。它的工作机制如图 1 所示。 图 1 rotate()算法的工作方式(点此查看大图) 为了理解如何旋转序列,可以将序列中的元素想象成手镯上的珠子。rota
在三个JS中,是否可以用鼠标旋转对象而不是用OrbitControls.js旋转相机( https://threejs.org/docs/#examples/controls/OrbitControl
我正在学习 CSS 过渡和转换。这是 HTML: Transformatons and Transitions animate animate2 d
我们有一个图像,它似乎在旋转时消失了一秒钟。这个问题存在于 IE8 中,但在 IE9 和其他支持 HTML5 的浏览器中工作正常。我们使用了 jQuery 旋转插件。 HTML CSS #obj {
作为评估的一部分,我被赋予了这项任务......“‘旋转’按钮应该翻转元素的纵横比。” 为了完成这个,我定位了元素并切换了一个类名(旋转),然后添加了这个 CSS... .main-inner.rot
我从 Unity 插件 Final IK 中看到了这行代码。 整个函数是这样的: //Limits rotation to a single degree of freedom (along axis
我正在尝试在动画关键帧内同时应用 -webkit-filter:hue-rotate() 和 -webkit-transform:rotate()。不幸的是,即使是 Chrome Canary 也无法
我正在尝试制作看起来像这样的波斯尼亚和黑塞哥维那国旗。 我正在努力实现星星的排列方式。它们位于 45 度倾斜轴上,但星星本身没有旋转。 以下是我正在尝试的最低限度代码,但它也会旋转星星。 有什么办法可
我正在尝试使用 ratcave for python 创建一个项目。但是当我导入 ratcave 时,出现以下错误: AttributeError: 'scipy.spatial.transform.
我正在尝试使用 ratcave for python 创建一个项目。但是当我导入 ratcave 时,出现以下错误: AttributeError: 'scipy.spatial.transform.
我的问题是我使用支持 CSS2 和 javascript 但不支持 css3 的 html 到 pdf 生成器 (acts_as_flying_saucer),所以我不能使用 transform: r
我做了以下转换: // Translate my cube to origin myCubeModelMatrix = glm::translate( myCubeModelMatrix, vec3(
我正在将一些基于 PIL 的代码转换为 NumPy,但我发现 skimage.transform.rotate函数比 PIL 的 Image.rotate 慢显着。 作为一个粗略的比较,使用 skim
前言 .我知道过去曾多次问过这个问题,但没有一个解决方案实际上对我有用。自从提出类似问题(根据耗时过滤的 Google 搜索)以来,也已经有好几年了,因此大多数较旧的答案都已过时。如果有任何方法可以让
我试图将元素从其起始旋转点旋转 360 度,而不是从 0deg。例如,如果起点是 90deg,它会从 90deg 旋转到 90deg(整圈)。 我的目标是使用简单的@keyframes 动画来旋转元素
我是一名优秀的程序员,十分优秀!