远距离变换元素的宽度/高度(以像素为单位)
Width/Height in pixels for far away transformed elements
我目前正在开发一个web界面,该界面使用3D转换作为缩放方法。缩放是通过一个名为impress.js的API完成的,该API只需通过3D转换将相机移动得更近或更远。
问题
我需要为一堆div创建一个正方形覆盖,因为它们可能很远,我需要计算它们在屏幕上实际占用的像素量。我想,既然我可以从相机当前的div中获得多少像素,我应该能够确定远处元素的明显像素大小。
我试着用角度大小来估计它,看看这里。然而,当你移动得太近、太远或物体太薄或太宽时,它就不起作用了。
代码
我现在做的事情看起来像这样:
var div = $("#target"),
camera = $("#camera"),
angularSize = camera.z < 0 ? Math.tan(div.offsetWidth / camera.z) : 1;
return {
width: div.offsetWidth * angularSize,
height: div.offsetHeight * angularSize,
}
但它只适用于某些元素,而且也不完美。
我拥有的:
- 每个元素的实际宽度/高度
- Z索引中的像素数量,我正在从中查看我的元素
我需要什么
- 远元素在我的屏幕上实际占用的像素量
如果有人知道我如何计算,我会很乐意帮助
没关系,我意识到我把事情搞得太复杂了,只能使用相机的正常视图距离和当前位置。
相机在移动之前的视角是1000px,我可以随时获得相机的当前z位置,所以我做了这个:
sizeScale = 1000 / camera.z;
return {
width: element.offsetWidth * sizeScale,
height: element.offsetHeight * sizeScale,
}
相关文章:
- 获取以屏幕像素为单位的旋转SVG元素的边界
- GridStack项的高度和宽度(以像素为单位)
- 远距离变换元素的宽度/高度(以像素为单位)
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- .height() 以百分比返回高度,如何以像素为单位获取它
- 如何从顶部获取窗口位置(以像素为单位)
- 以像素为单位获取整个页面的高度
- 获取返回的数据表的大小(以像素为单位)
- 裁剪后的图像大于 coppit.js 中以像素为单位的内在大小
- 如何查找可滚动页面的垂直长度(以像素为单位)
- 使用 snap SVG,如何以像素为单位计算 SVG 文件的整个路径
- 为什么我的圆圈不会以“像素”为单位显示
- jQuery滚动事件:如何确定滚动量(滚动增量),以像素为单位
- 如何获得以像素为单位的上传图像分辨率?(上传前)
- 使用RaphaelJS将路径缩放为纸张大小或以像素为单位设置路径尺寸
- jQuery获取以像素为单位的高度
- 如何使用JavaScript或jQuery获得以像素为单位的文本宽度
- 使用javascript确定图像大小(以像素为单位)
- OpenLayers以像素为单位
- Javascript mobile-根据屏幕尺寸以像素为单位计算元素尺寸