- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如何将 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/15207351/
哪个更好?使用像这样的速记: padding:5px 10px 15px 20px; 或者像这样使用手写体: padding-top:5px; padding-right:10px; padding-
我目前在编辑 manuscript.tex 文件时遇到问题。到目前为止,我一直使用文本简写 $$;然而,出现了一些问题,它要求我将所有 $...$ 替换为 \(\)。 我认为带有替换操作的“sed”应
我想要一个简单的 if 速记来检查一个数组是否有一个特定的键,如果有则取消设置它。 $test = array("hi" => "123"); isset($test["hi"]) ? unset($
我在 F# 中映射记录列表并获取命名值: type Person = { FirstName: string; LastName: string } let people = [ { Firs
因此,我有一对类型类,我将经常一起使用它们,并且我想避免每次都指定它们。基本上,而不是把 :: (Ord a, Fractional a, Ord b, Fractional b, ... Ord z
有没有更优雅的写法? : var AllOperation = $('#menu > li.operation'); var Operation1= AllOperation[0]; $(Operat
基本上我想这样做: x ? console.log("true") : x=55 && console.log("changed!!") 如果x为false,它会将值更改为55和console.log
而不是在方法的开头声明一个列表,添加到它然后返回它 - 我确信有一些可以写在循环中的速记返回语句,例如,保存额外的代码(声明等),但我忘记了。有人知道我的意思吗? 最佳答案 使用 yield : pu
我发现自己经常写这样的东西而且看起来太罗嗦了: obj = my_dict.get('obj') if obj: var = obj 有更好的方法吗?也许在一行中? 最佳答案 get 函数接受
多年来我一直在使用 PHP 进行编程,我一直想知道是否有一种方法可以“预连接”一个字符串。示例: $path = '/lib/modules/something.php'; $server = $_S
在将值附加到数组时,是否有 JavaScript(甚至在 coffeescript 中).push() 的简写?很像 php 的 $array[] = 'added to array';。 最佳答案
我读了this tutorial关于在 CSS 选择器中使用正则表达式并试图推断:是否有 CSS 速记来执行以下操作?我想选择所有类为“foo”的 div,这些类有一个附加类“a”、“b”、“c”或“
如何将 rotateX(50deg) rotateY(20deg) rotateZ(15deg) 组合成简写 rotate3d()? 最佳答案 rotateX(50deg) 等价于rotate3d(1
如何将 rotateX(50deg) rotateY(20deg) rotateZ(15deg) 组合成简写 rotate3d()? 最佳答案 rotateX(50deg) 等价于rotate3d(1
我有一个像这样的简单对象(或数组)... stdClass Object ( [people] => Array ( [0] => stdClass Object ( [nam
我有一个变量,如果该变量是一个对象,我想在该对象上调用一个方法,如果不是,我什么也不想做。 我想知道是否有任何理由不应该这样做。 var foo = null; /////////////////
我想知道是否有任何简写方式可以在 JavaScript 中创建一个 promise,或者有什么方法可以将 .then 添加到普通函数中。示例: dbl = a => a | 0 ? a * 2 : !
是否有以下 JavaScript bool 三元表达式的简写语法: var foo = (expression) ? true : false 最佳答案 当然,您只想将表达式转换为 bool 值: v
这个问题在这里已经有了答案: One-liner to take some properties from object in ES 6 (13 个答案) How to get a subset o
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭8 年前。 Improve
我是一名优秀的程序员,十分优秀!