You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current spec requires that rotate3D should be converted to a matrix (if the rotations are not along the same vector), and then interpolated (by decomposing into quaternions).
Most implementations are just converting rotate3D into quaternions directly and interpolating, and we should probably specify that.
The text was updated successfully, but these errors were encountered:
https://bugs.webkit.org/show_bug.cgi?id=260932
<rdar://114732141>
Reviewed by NOBODY (OOPS!).
Looks like the other engines are doing this (despite it not being what the spec says), and it's needed to pass tests.
Filed w3c/csswg-drafts#9278 to get the spec to reflect reality here.
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
* Source/WebCore/platform/graphics/transforms/Quaternion.cpp:
(WebCore::Quaternion::fromRotate3d):
* Source/WebCore/platform/graphics/transforms/Quaternion.h:
* Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp:
(WebCore::RotateTransformOperation::blend):
I am also working on the Gecko bug for this: https://bugzilla.mozilla.org/show_bug.cgi?id=1737209. Gecko also converts the axis, angle into the quaternion vector directly and then apply slerp. We use this way because we would like to avoid the redundant operations, e.g. convert rotate3d() into 3d matrix, and decompose it. Converting the axis, angle pair into quaternion vector looks simpler.
However, quaternion vector works well only when the rotation angle is in (-360deg, 360deg). Gecko has this bug and I'm fixing it.
The current spec requires that rotate3D should be converted to a matrix (if the rotations are not along the same vector), and then interpolated (by decomposing into quaternions).
Most implementations are just converting rotate3D into quaternions directly and interpolating, and we should probably specify that.
The text was updated successfully, but these errors were encountered: