Javascript 将视野值转换为CSS3D透视值

Javascript 将视野值转换为CSS3D透视值,javascript,html,css,Javascript,Html,Css,如果我想要一个60°视场的相机,那么如何计算CSS3D透视值 perspective: ?; perspective-origin: center center; 我找到了一个关于如何从透视值计算投影矩阵的描述,但我仍然不太理解: 因此,如果我有一个给定的视野,并且我知道元素的offsetWidth/offsetHeight,那么我应该如何计算所需的透视值 perspective: ?; perspective-origin: center center; 近面和远面在哪里 几年前我问过,得

如果我想要一个60°视场的相机,那么如何计算CSS3D透视值

perspective: ?;
perspective-origin: center center;
我找到了一个关于如何从透视值计算投影矩阵的描述,但我仍然不太理解:

因此,如果我有一个给定的视野,并且我知道元素的offsetWidth/offsetHeight,那么我应该如何计算所需的透视值

perspective: ?;
perspective-origin: center center;
近面和远面在哪里

几年前我问过,得到了下面的回答。链接的文章已经改变了,所以我引用这篇文章,因为它不再存在于文章中(但可能还有其他有用的信息)

如果我读对了,你有一个金字塔,它的底部在远离观察者的[perspective px]处。因此,如果您想要60°fov,从中心到角有一个30°三角形,您需要找到相邻边的长度:

Math.pow( w/2*w/2 + h/2*h/2, 0.5 ) / Math.tan( 30 * Math.PI / 180 )
我想;)它为
1000x500
视图生成了
968
的透视图,这似乎与随机使用
-webkit透视图差不多


工作草案作了如下解释:

透视图()

指定透视投影矩阵。这个矩阵将一个观察立方体映射到一个金字塔上,该金字塔的底部离目标无限远 查看器,其峰值表示查看器的位置。可视的 区域是由视口的四条边(区域)限定的区域 用于在之间呈现网页的浏览器窗口的一部分 观察者的位置和距离目标无限远的点 观众)。作为函数参数给定的深度表示 z=0平面与查看器的距离。较低的值表示 金字塔更加扁平,因此透视效果更加明显 效果。该值以像素为单位,因此值1000表示 适度的缩短和200的值会产生极端的 数量该矩阵由一个单位矩阵开始计算,然后 将第3行第4列的值替换为-1/深度。这个 深度的值必须大于零,否则函数无效 无效