【发布时间】:2015-04-15 14:58:10
【问题描述】:
我实际上正在编写一个脚本 domvertices,它计算任何 DOM 元素的 4 个顶点 3d 坐标:http://bl.ocks.org/abernier/97a5fb8c1bebacd1958e
var el = document.getElementById('foo');
var vertices = domvertices(el);
console.log(vertices);
输出:
{
a: {x: , y: , z: },
b: {x: , y: , z: },
c: {x: , y: , z: },
d: {x: , y: , z: }
}
为了实现这一点,我将 dom 向上走,并为每个元素存储应用到它的矩阵(参见 ¹)。
最后,我以相反的顺序将矩阵应用回目标元素。
--
其实很好用!
我唯一的问题是关于透视...目前,在计算元素的矩阵时,我不考虑 perspective 或 perspective-origin。
因此,不考虑透视变形(作为绘制顶点时的一种解决方法,我将它们附加到受透视的元素中,以便它们正确定位)。
我想在计算元素的矩阵时使用perspective 和perspective-origin。
我可以轻松制作一个透视矩阵,我的问题是何时将perspective 和perspectiveOrigin 矩阵应用于¹?
嵌套多视角呢?
¹:元素的矩阵组成如下(从右到左阅读):
transformOrigin^-1 * transform * transformOrigin * relativePosition * Identity
任何帮助表示赞赏。
【问题讨论】:
标签: javascript css matrix 3d three.js