问题:matrix3d的某些值导致div根本不渲染,但是div的检查器高亮区域是正确的形状。
我有一个应用程序,它使用相机识别矩形物体角落附近的四个点。我从这些点的位置计算矩阵,以将具有特定大小的div映射到由点的屏幕位置定义的四边形。这一切都很好,但是在点的某些排列中,由矩阵变换的div根本不会呈现。在实现这个之后,我找到了这个例子,尽管没有AR,我做了很多相同的事情:http://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/
如果使用这样的矩阵检查div,则蓝色突出显示的形状正确,但div不会渲染。它似乎也不计算指针事件,否则光标样式将是可见的。如果您运行以下代码段,您应该能够检查div并突出显示它以查看形状应该有。
.rect {
position:absolute;
left:0;
top:0;
width:736px;
height:414px;
transform-origin:0 0;
background:red;
cursor:crosshair;
}

<div class="rect" style="transform:matrix3d(0.009359283667, 0.010930981398, 0, 0.000104500516, -0.092142538522, -0.121434733223, 0, -0.000225136056, 0, 0, 1, 0, -21.813928384019, -10.640940675131, 0, -0.106409406751)"></div>
<div>Inspect my invisible sibling...</div>
&#13;
我目前在计算后的矩阵的每个元素上使用.toFixed(12),并且在将它应用于div之前。在我之前的研究中,有人提出这可能是一个精确的问题,但事实似乎并非如此。我已经尝试过.toFixed(6),但这只会使矩阵不那么正确。
我在Chrome,版本42.0.2311.135(64位)和Safari版本7.1.5(9537.85.14.17)中看到了这一点。我还没有尝试过其他浏览器。
现在,Frank Ta的例子似乎没有和我一样的问题,所以我怀疑有一些方法可以不同地计算矩阵,以便它们能够正确渲染。但是,这与我提出的问题无关。我的问题是:为什么这些特定的矩阵会导致正常渲染失败,但在检查器中突出显示它们会显示预期的形状?
如果它有帮助,我可以列出这些矩阵的其他例子。