mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
feat: Add 3D rotation to view - takeover of PR# 5950 (#8136)
* feat: add 3d rotation * chore: fix build errors * chore: fix tslint errors * chore: add @types/chai dev dep * chore: unused import cleanup * chore: update tests for x,y rotation * chore: rebase upstream/master * fix: iOS Affine Transform test verification * feat(css): Added optional css-tree parser (#8076) * feat(css): Added optional css-tree parser * test: css-tree parser compat tests * test: more css-tree compat tests * feat(dialogs): Setting the size of popup dialog thru dialog options (#8041) * Added iOS specific height and width attributes to ShowModalOptions * Set the height and width of the popup dialog to the presenting controller * dialog options ios attributes presentationStyle, height & width are made optional * Updated NativeScript.api.md for public API changes * Update with git properties * Public API * CLA update * fix: use iOS native-helper for 3d-rotate * test: Fix tests using _getTransformMismatchError * fix: view.__hasTransfrom not set updating properly * test: fix css-animations test page Co-authored-by: Alexander Vakrilov <alexander.vakrilov@gmail.com> Co-authored-by: Darin Dimitrov <darin.dimitrov@gmail.com> Co-authored-by: Shailesh Lolam <slolam@live.com> Co-authored-by: Dimitar Topuzov <dtopuzov@gmail.com>
This commit is contained in:

committed by
Alexander Vakrilov

parent
8550c3293d
commit
e8f5ac8522
@ -16,12 +16,15 @@ const TRANSFORM_MATRIXES = {
|
||||
0, 1, y,
|
||||
0, 0, 1,
|
||||
],
|
||||
"rotate": angleInDeg => {
|
||||
const angleInRad = degreesToRadians(angleInDeg);
|
||||
"rotate": ({ x, y, z }) => {
|
||||
// TODO: Handle rotations over X and Y axis
|
||||
const radZ = degreesToRadians(z);
|
||||
const cosZ = Math.cos(radZ);
|
||||
const sinZ = Math.sin(radZ);
|
||||
|
||||
return [
|
||||
Math.cos(angleInRad), -Math.sin(angleInRad), 0,
|
||||
Math.sin(angleInRad), Math.cos(angleInRad), 0,
|
||||
cosZ, -sinZ, 0,
|
||||
sinZ, cosZ, 0,
|
||||
0, 0, 1,
|
||||
];
|
||||
},
|
||||
@ -43,6 +46,7 @@ export function multiplyAffine2d(m1: number[], m2: number[]): number[] {
|
||||
];
|
||||
}
|
||||
|
||||
// TODO: Decompose rotations over X and Y axis
|
||||
export function decompose2DTransformMatrix(matrix: number[])
|
||||
: TransformFunctionsInfo {
|
||||
|
||||
@ -52,7 +56,7 @@ export function decompose2DTransformMatrix(matrix: number[])
|
||||
const determinant = A * D - B * C;
|
||||
const translate = { x: E || 0, y: F || 0 };
|
||||
|
||||
// rewrite with obj desctructuring using the identity matrix
|
||||
// rewrite with obj destructuring using the identity matrix
|
||||
let rotate = 0;
|
||||
let scale = { x: 1, y: 1 };
|
||||
if (A || B) {
|
||||
@ -67,7 +71,7 @@ export function decompose2DTransformMatrix(matrix: number[])
|
||||
|
||||
rotate = radiansToDegrees(rotate);
|
||||
|
||||
return { translate, rotate, scale };
|
||||
return { translate, rotate: { x: 0, y: 0, z: rotate }, scale };
|
||||
}
|
||||
|
||||
function verifyTransformMatrix(matrix: number[]) {
|
||||
|
Reference in New Issue
Block a user