Nutrient Web SDK
    Preparing search index...

    Interface TransformationMatrix

    Matrix for affine 2D transformations.

    Layout:

            // The values represent:
    

    | a c e | // - (a,b) the x base vector | b d f | // - (c,d) the y base vector | 0 0 1 | // - (e,f) the origin // of the resulting coordinate system.

    The third row is always [0 0 1], thus we don't store the values.

    interface TransformationMatrix {
        a: number;
        b: number;
        c: number;
        d: number;
        e: number;
        f: number;
        applyToPoint(__namedParameters: [number, number]): [number, number];
        applyToVector(__namedParameters: [number, number]): [number, number];
        asImmutable(): this;
        asMutable(): this;
        clear(): this;
        delete<K extends "b" | "a" | "c" | "d" | "e" | "f">(key: K): this;
        deleteIn(keyPath: Iterable<unknown>): this;
        equals(other: unknown): boolean;
        get<K extends "b" | "a" | "c" | "d" | "e" | "f">(
            key: K,
        ): { a: number; b: number; c: number; d: number; e: number; f: number }[K];
        getIn(keyPath: Iterable<unknown>, notSetValue?: unknown): unknown;
        has(key: unknown): boolean;
        inverse(): TransformationMatrix;
        merge(
            ...collections: Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >[],
        ): this;
        mergeDeep(
            ...collections: (
                | Iterable<[string, unknown], any, any>
                | Partial<
                    { a: number; b: number; c: number; d: number; e: number; f: number },
                >
            )[],
        ): this;
        mergeDeepIn(
            keyPath: Iterable<unknown>,
            ...collections: (
                | Iterable<[string, unknown], any, any>
                | Partial<
                    { a: number; b: number; c: number; d: number; e: number; f: number },
                >
            )[],
        ): this;
        mergeDeepWith(
            merger: (previous?: unknown, next?: unknown, key?: string) => unknown,
            ...collections: (
                | Iterable<[string, unknown], any, any>
                | Partial<
                    { a: number; b: number; c: number; d: number; e: number; f: number },
                >
            )[],
        ): this;
        mergeIn(
            keyPath: Iterable<unknown>,
            ...collections: (
                | Iterable<[string, unknown], any, any>
                | Partial<
                    { a: number; b: number; c: number; d: number; e: number; f: number },
                >
            )[],
        ): this;
        mergeWith(
            merger: (previous?: unknown, next?: unknown, key?: string) => unknown,
            ...collections: (
                | Iterable<[string, unknown], any, any>
                | Partial<
                    { a: number; b: number; c: number; d: number; e: number; f: number },
                >
            )[],
        ): this;
        removeIn(keyPath: Iterable<unknown>): this;
        rotate(degCW: number): TransformationMatrix;
        rotateRad(a: number): TransformationMatrix;
        scale(sx: number, sy?: number): TransformationMatrix;
        set<K extends "b" | "a" | "c" | "d" | "e" | "f">(
            key: K,
            value: {
                a: number;
                b: number;
                c: number;
                d: number;
                e: number;
                f: number;
            }[K],
        ): this;
        setIn(keyPath: Iterable<unknown>, value: unknown): this;
        toCssValue(): string;
        toJS(): {
            a: number;
            b: number;
            c: number;
            d: number;
            e: number;
            f: number;
        };
        toJSON(): {
            a: number;
            b: number;
            c: number;
            d: number;
            e: number;
            f: number;
        };
        toSeq(): Keyed<string, unknown>;
        transform(
            a2: number,
            b2: number,
            c2: number,
            d2: number,
            e2: number,
            f2: number,
        ): TransformationMatrix;
        translate(
            __namedParameters: { x: number; y: number },
        ): TransformationMatrix;
        translateX(tx: number): TransformationMatrix;
        translateY(ty: number): TransformationMatrix;
        update<K extends "b" | "a" | "c" | "d" | "e" | "f">(
            key: K,
            updater: (
                value: {
                    a: number;
                    b: number;
                    c: number;
                    d: number;
                    e: number;
                    f: number;
                }[K],
            ) => { a: number; b: number; c: number; d: number; e: number; f: number }[K],
        ): this;
        updateIn(
            keyPath: Iterable<unknown>,
            notSetValue: unknown,
            updater: (value: unknown) => unknown,
        ): this;
        updateIn(
            keyPath: Iterable<unknown>,
            updater: (value: unknown) => unknown,
        ): this;
        withMutations(mutator: (mutable: this) => unknown): this;
    }

    Hierarchy

    • Readonly<TransformationMatrixData>
    • InheritableImmutableRecord<TransformationMatrixData>
      • TransformationMatrix
    Index

    Properties

    a: number = ...

    scaleX()

    1
    
    b: number = ...

    skewY()

    0
    
    c: number = ...

    skewX()

    0
    
    d: number = ...

    scaleY()

    1
    
    e: number = ...

    translateX()

    0
    
    f: number = ...

    translateY()

    0
    

    Methods

    • Multiplies the point with the matrix to apply the transformation. Transforming a "point" means also applying any translation from the matrix.

      | x'| | a c e | | x | | y'| = | b d f | * | y | | 1 | | 0 0 1 | | 1 |

      Parameters

      • __namedParameters: [number, number]

      Returns [number, number]

    • Multiplies the vector with the matrix to apply the transformation. Transforming a "vector" does ignore the translation of the matrix.

      | x'| | a c e | | x | | y'| = | b d f | * | y | | 0 | | 0 0 1 | | 0 |

      Parameters

      • __namedParameters: [number, number]

      Returns [number, number]

    • Returns this

      Map#asImmutable

    • Returns this

      Map#asMutable

    • Returns a new instance of this Record type with all values set to their default values.

      Returns this

    • Returns a new instance of this Record type with the value for the specific key set to its default value.

      Type Parameters

      • K extends "b" | "a" | "c" | "d" | "e" | "f"

      Parameters

      • key: K

      Returns this

      remove

    • Parameters

      Returns this

      removeIn

    • Parameters

      • other: unknown

      Returns boolean

    • Returns the value associated with the provided key, which may be the default value defined when creating the Record factory function.

      If the requested key is not defined by this Record type, then notSetValue will be returned if provided. Note that this scenario would produce an error when using Flow or TypeScript.

      Type Parameters

      • K extends "b" | "a" | "c" | "d" | "e" | "f"

      Parameters

      • key: K

      Returns { a: number; b: number; c: number; d: number; e: number; f: number }[K]

    • Parameters

      • keyPath: Iterable<unknown>
      • OptionalnotSetValue: unknown

      Returns unknown

    • Parameters

      • key: unknown

      Returns boolean

    • Calculates the inverse matrix. This requires the determinant to be != 0, which is always granted since the matrix can only hold affine transformations (all affine transformations are easily invertible).

      We exploit the fact that the matrix is affine to speed things up.

      Returns TransformationMatrix

    • Parameters

      • ...collections: Partial<{ a: number; b: number; c: number; d: number; e: number; f: number }>[]

      Returns this

    • Parameters

      • ...collections: (
            | Iterable<[string, unknown], any, any>
            | Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >
        )[]

      Returns this

    • Parameters

      • keyPath: Iterable<unknown>
      • ...collections: (
            | Iterable<[string, unknown], any, any>
            | Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >
        )[]

      Returns this

    • Parameters

      • merger: (previous?: unknown, next?: unknown, key?: string) => unknown
      • ...collections: (
            | Iterable<[string, unknown], any, any>
            | Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >
        )[]

      Returns this

    • Parameters

      • keyPath: Iterable<unknown>
      • ...collections: (
            | Iterable<[string, unknown], any, any>
            | Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >
        )[]

      Returns this

    • Parameters

      • merger: (previous?: unknown, next?: unknown, key?: string) => unknown
      • ...collections: (
            | Iterable<[string, unknown], any, any>
            | Partial<
                { a: number; b: number; c: number; d: number; e: number; f: number },
            >
        )[]

      Returns this

    • Parameters

      Returns this

    • Rotates the matrix by deg degrees in the xy-plane clockwise about the origin of the Cartesian coordinate system.

      Parameters

      • degCW: number

      Returns TransformationMatrix

    • Rotates the matrix by rad radian in the xy-plane clockwise about the origin of the Cartesian coordinate system.

      Parameters

      • a: number

      Returns TransformationMatrix

    • Applies a scaling to the matrix. If only sx is set and sy is undefined, we will scale x and y by sx.

      A scale of 1 does not modify a dimension.

           | sx  0  0 |
      

      M' = M * | 0 sy 0 | | 0 0 1 |

      Parameters

      • sx: number
      • Optionalsy: number

      Returns TransformationMatrix

    • Type Parameters

      • K extends "b" | "a" | "c" | "d" | "e" | "f"

      Parameters

      • key: K
      • value: { a: number; b: number; c: number; d: number; e: number; f: number }[K]

      Returns this

    • Parameters

      • keyPath: Iterable<unknown>
      • value: unknown

      Returns this

    • Returns the matrix's values as a CSS transform string.

      Returns string

    • Deeply converts this Record to equivalent native JavaScript Object.

      Note: This method may not be overridden. Objects with custom serialization to plain JS may override toJSON() instead.

      Returns { a: number; b: number; c: number; d: number; e: number; f: number }

      • a: number

        scaleX()

        1
        
      • b: number

        skewY()

        0
        
      • c: number

        skewX()

        0
        
      • d: number

        scaleY()

        1
        
      • e: number

        translateX()

        0
        
      • f: number

        translateY()

        0
        
    • Shallowly converts this Record to equivalent native JavaScript Object.

      Returns { a: number; b: number; c: number; d: number; e: number; f: number }

      • a: number

        scaleX()

        1
        
      • b: number

        skewY()

        0
        
      • c: number

        skewX()

        0
        
      • d: number

        scaleY()

        1
        
      • e: number

        translateX()

        0
        
      • f: number

        translateY()

        0
        
    • Returns Keyed<string, unknown>

    • Multiplies current matrix values with a new transformation matrix.

      The transformation will be applied on the left side of the multiplication, so that they are applied in the order transform() is called.

      | a' c' e' | | a2 c2 e2 | | a c e | | b' d' f' | = | b2 d2 f2 | * | b d f | | 0 0 1 | | 0 0 1 | | 0 0 1 |

      Parameters

      • a2: number
      • b2: number
      • c2: number
      • d2: number
      • e2: number
      • f2: number

      Returns TransformationMatrix

    • Applies a translation to the matrix

           | 1 0 tx |
      

      M' = M * | 0 1 ty | | 0 0 1 |

      Parameters

      • __namedParameters: { x: number; y: number }

      Returns TransformationMatrix

    • Type Parameters

      • K extends "b" | "a" | "c" | "d" | "e" | "f"

      Parameters

      • key: K
      • updater: (
            value: {
                a: number;
                b: number;
                c: number;
                d: number;
                e: number;
                f: number;
            }[K],
        ) => { a: number; b: number; c: number; d: number; e: number; f: number }[K]

      Returns this

    • Parameters

      • keyPath: Iterable<unknown>
      • notSetValue: unknown
      • updater: (value: unknown) => unknown

      Returns this

    • Parameters

      • keyPath: Iterable<unknown>
      • updater: (value: unknown) => unknown

      Returns this

    • Note: Not all methods can be used on a mutable collection or within withMutations! Only set may be used mutatively.

      Parameters

      • mutator: (mutable: this) => unknown

      Returns this

      Map#withMutations