PIXI.groupD8

``namespace groupD8``

Implements the dihedral group D8, which is similar to group D4; D8 is the same but with diagonals, and it is used for texture rotations.

The directions the U- and V- axes after rotation of an angle of `a: GD8Constant` are the vectors `(uX(a), uY(a))` and `(vX(a), vY(a))`. These aren't necessarily unit vectors.

Origin:
This is the small part of gameofbombs.com portal system. It works.

See:

Summary

Properties from groupD8

 number static E = 0 number static MAIN_DIAGONAL = 10 number static MIRROR_HORIZONTAL = 12 number static MIRROR_VERTICAL = 8 number static N = 6 number static NE = 7 number static NW = 5 number static REVERSE_DIAGONAL = 14 number static S = 2 number static SE = 1 number static SW = 3 number static W = 4

Methods from groupD8

 PIXI.GD8Symmetry static add(rotationSecond: PIXI.GD8Symmetry, rotationFirst: PIXI.GD8Symmetry) Composes the two D8 operations. PIXI.GD8Symmetry static byDirection(dx: number, dy: number) PIXI.GD8Symmetry static inv(rotation: PIXI.GD8Symmetry) boolean static isVertical(rotation: PIXI.GD8Symmetry) void static matrixAppendRotationInv(matrix: PIXI.Matrix, rotation: PIXI.GD8Symmetry, tx: number, ty: number) number static rotate180(rotation: number) PIXI.GD8Symmetry static sub(rotationSecond: PIXI.GD8Symmetry, rotationFirst: PIXI.GD8Symmetry) PIXI.GD8Symmetry static uX(ind: PIXI.GD8Symmetry) PIXI.GD8Symmetry static uY(ind: PIXI.GD8Symmetry) PIXI.GD8Symmetry static vX(ind: PIXI.GD8Symmetry) PIXI.GD8Symmetry static vY(ind: PIXI.GD8Symmetry)

Public Properties

E
``static E: number = 0``
Rotation Direction
East
MAIN_DIAGONAL
``static MAIN_DIAGONAL: number = 10``

MIRROR_HORIZONTAL
``static MIRROR_HORIZONTAL: number = 12``

MIRROR_VERTICAL
``static MIRROR_VERTICAL: number = 8``

N
``static N: number = 6``
Rotation Direction
-90°/270°↻ North
NE
``static NE: number = 7``
Rotation Direction
-45°/315°↻ Northeast
NW
``static NW: number = 5``
Rotation Direction
-135°/225°↻ Northwest
REVERSE_DIAGONAL
``static REVERSE_DIAGONAL: number = 14``

S
``static S: number = 2``
Rotation Direction
90°↻ South
SE
``static SE: number = 1``
Rotation Direction
45°↻ Southeast
SW
``static SW: number = 3``
Rotation Direction
135°↻ Southwest
W
``static W: number = 4``
Rotation Direction
180° West

Public Methods

``static add(rotationSecond: PIXI.GD8Symmetry, rotationFirst: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``

Composes the two D8 operations.

Taking `^` as reflection:

E=0 S=2 W=4 N=6 E^=8 S^=10 W^=12 N^=14
E=0 E S W N E^ S^ W^ N^
S=2 S W N E S^ W^ N^ E^
W=4 W N E S W^ N^ E^ S^
N=6 N E S W N^ E^ S^ W^
E^=8 E^ N^ W^ S^ E N W S
S^=10 S^ E^ N^ W^ S E N W
W^=12 W^ S^ E^ N^ W S E N
N^=14 N^ W^ S^ E^ N W S E

This is a Cayley table

Parameters:
Name Type Description
rotationSecond PIXI.GD8Symmetry

Second operation, which is the row in the above cayley table.

rotationFirst PIXI.GD8Symmetry

First operation, which is the column in the above cayley table.

Returns:
Type Description
PIXI.GD8Symmetry

Composed operation

byDirection
``static byDirection(dx: number, dy: number) → {PIXI.GD8Symmetry}``

Approximates the vector `V(dx,dy)` into one of the eight directions provided by `groupD8`.

Parameters:
Name Type Description
dx number

X-component of the vector

dy number

Y-component of the vector

Returns:
Type Description
PIXI.GD8Symmetry

Approximation of the vector into one of the eight symmetries.

inv
``static inv(rotation: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``
Parameters:
Name Type Description
rotation PIXI.GD8Symmetry

symmetry whose opposite is needed. Only rotations have opposite symmetries while reflections don't.

Returns:
Type Description
PIXI.GD8Symmetry

The opposite symmetry of `rotation`

isVertical
``static isVertical(rotation: PIXI.GD8Symmetry) → {boolean}``

Checks if the rotation angle is vertical, i.e. south or north. It doesn't work for reflections.

Parameters:
Name Type Description
rotation PIXI.GD8Symmetry

The number to check.

Returns:
Type Description
boolean

Whether or not the direction is vertical

matrixAppendRotationInv
``static matrixAppendRotationInv(matrix: PIXI.Matrix, rotation: PIXI.GD8Symmetry, tx: number, ty: number) → {void}``

Helps sprite to compensate texture packer rotation.

Parameters:
Name Type Default Description
matrix PIXI.Matrix

sprite world matrix

rotation PIXI.GD8Symmetry

The rotation factor to use.

tx number 0

sprite anchoring

ty number 0

sprite anchoring

Returns:
Type Description
void
rotate180
``static rotate180(rotation: number) → {number}``

Adds 180 degrees to rotation, which is a commutative operation.

Parameters:
Name Type Description
rotation number

The number to rotate.

Returns:
Type Description
number

Rotated number

sub
``static sub(rotationSecond: PIXI.GD8Symmetry, rotationFirst: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``

Reverse of `add`.

Parameters:
Name Type Description
rotationSecond PIXI.GD8Symmetry

Second operation

rotationFirst PIXI.GD8Symmetry

First operation

Returns:
Type Description
PIXI.GD8Symmetry

Result

uX
``static uX(ind: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``
Parameters:
Name Type Description
ind PIXI.GD8Symmetry

sprite rotation angle.

Returns:
Type Description
PIXI.GD8Symmetry

The X-component of the U-axis after rotating the axes.

uY
``static uY(ind: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``
Parameters:
Name Type Description
ind PIXI.GD8Symmetry

sprite rotation angle.

Returns:
Type Description
PIXI.GD8Symmetry

The Y-component of the U-axis after rotating the axes.

vX
``static vX(ind: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``
Parameters:
Name Type Description
ind PIXI.GD8Symmetry

sprite rotation angle.

Returns:
Type Description
PIXI.GD8Symmetry

The X-component of the V-axis after rotating the axes.

vY
``static vY(ind: PIXI.GD8Symmetry) → {PIXI.GD8Symmetry}``
Parameters:
Name Type Description
ind PIXI.GD8Symmetry

sprite rotation angle.

Returns:
Type Description
PIXI.GD8Symmetry

The Y-component of the V-axis after rotating the axes.