我正在尝试拖动使用3d css变换转换的元素,例如 ReadStream
问题是我试图拖动一些嵌套在transformend元素中的元素,并且它继承了他的转换矩阵。在这种情况下,子元素具有不同的坐标系,该坐标系是与父母的3d,并且我的鼠标移动具有不同的2d坐标系。我使用以下公式进行了二维计算:
rotateX(-50)
var x1 = (deltaX * m3d.m11) + (deltaY * m3d.m21) + (0 * m3d.m31) + (1 * m3d.m41);
var y1 = (deltaX * m3d.m12) + (deltaY * m3d.m22) + (0 * m3d.m32) + (1 * m3d.m42);
和deltaX
是鼠标从拖动的起始位置移动到当前鼠标移动的偏移量。 deltaY
是一个对象,它包含当前元素的4x4矩阵,该矩阵与其父元素的所有矩阵相乘,并在最终中被投射。
我在这个site中读到了这个。这对元素的二维转换起作用。当我们对m3d
,skew
,rotateZ
进行转换时,没有问题,并且元素随着鼠标光标移动。但是如果我们有scale
或rotateX
元素在光标周围飞行。
我读到我们可能会按照article进行鼠标的光线投射,但我仍然不知道我应该怎么做到这一点。