-webkit-perspective背后的数学是什么?

时间:2011-11-06 19:07:51

标签: css css3 css-transforms webkit-perspective

“简单”的问题我无法找到答案 - -webkit-perspective实际上在数学上做了什么? (我知道它的效果,它基本上就像一个焦距控制),例如-webkit-perspective: 500是什么意思?!?

我需要找到被移动的内容的屏幕位置,其中包括-webkit-perspective

3 个答案:

答案 0 :(得分:7)

The CSS 3D Transforms Module工作草案给出了以下解释:

  

<强>透视(小于数&GT)

     

指定透视投影矩阵。该矩阵将观察立方体映射到金字塔上,金字塔的底部距离金字塔无限远   观众及其峰值代表观众的位置。可见   area是由视口的四个边界限定的区域(   用于在其间呈现网页的浏览器窗口的一部分   观察者的位置和距离无穷远的点   观众)。作为函数的参数给出的深度表示   z = 0平面距观察者的距离。较低的值给出了   更扁平的金字塔,因此更明显的视角   影响。该值以像素为单位,因此值1000表示a   适量的透视和200的价值给了极端   量。通过以单位矩阵开始计算矩阵   用值-1 / depth替换第3行第4列的值。该   深度值必须大于零,否则函数为   无效。

如果不是完全清楚的话,这是一个开始。第一句让我相信维基百科上的the perspective projection matrix article可能会有一些帮助,尽管在这篇文章的评论中发现CSS工作组的惯例与维基百科中的约定可能会略有不同,所以请检查那些是为了让自己头疼。

答案 1 :(得分:2)

查看http://en.wikipedia.org/wiki/Perspective_projection#Diagram

在阅读了之前的评论并做了一些研究和测试后,我非常确定这是正确的。

请注意,对于Y坐标也是如此。

转换X =原始X *(透视/(透视 - Z翻译))

例如。 Div宽500px 透视是10000px Z方向的变换为-5000px

转换宽度= 500 *(10000 /(10000 - ( - 5000)) 变换宽度= 500 *(10000/15000)= 500 *(2/3)= 333px

答案 2 :(得分:0)

@Domenic奇怪的是,描述“矩阵是通过以单位矩阵开始并将第3行第4列的值替换为值-1 /深度来计算的。”已经从The CSS 3D Transforms Module工作草案中删除了。也许这种描述可能存在一些不准确之处。

好吧,关于透视(&lt; number&gt;)中的数字是什么意思,我认为可以看作是想象相机的位置与电脑屏幕之间的距离