// transform
// Functions for transformation matrices, and to be exact,
// affine non-reflective similarity transformation matrices.
//

// ### Constants ###

exports.EPSILON = require('./epsilon')

// Identity transform, a kind of multiplication by 1.
exports.IDENTITY = {
  a: 1,
  b: 0,
  x: 0,
  y: 0
}

// Useful transformations
const isqrt2 = 1 / Math.sqrt(2)
exports.ROT45 = { a: isqrt2, b: isqrt2, x: 0, y: 0 }
exports.ROT90 = { a: 0, b: 1, x: 0, y: 0 }
exports.ROT180 = { a: -1, b: 0, x: 0, y: 0 }
exports.ROT270 = { a: 0, b: -1, x: 0, y: 0 }
exports.HALF = { a: 0.5, b: 0, x: 0, y: 0 }
exports.X2 = { a: 2, b: 0, x: 0, y: 0 }

// ### Functions ###

exports.almostEqual =
exports.almostEquals = require('./almostEqual')

exports.create = require('./create')

exports.createFromPolar = require('./createFromPolar')

exports.createFromArray = require('./createFromArray')

exports.equal =
exports.equals = require('./equal')

exports.getRotation = require('./getRotation')

exports.getScale = require('./getScale')

exports.getTranslation = require('./getTranslation')

exports.toArray = require('./toArray')

exports.toMatrix = require('./toMatrix')

exports.toString = require('./toString')

// point
// transform
// transformPoint
// projectPoint
exports.mapPoint = require('./mapPoint')

exports.mapPoints = require('./mapPoints')

exports.mapVector = require('./mapVector')

exports.inverse = require('./inverse')

// exports.addVector = ?
// exports.translate =
exports.translateBy = require('./translateBy')

exports.scaleBy = require('./scaleBy')

exports.rotateBy = require('./rotateBy')

exports.compose =
exports.multiply = require('./multiply')

exports.validate = require('./validate')

// transform
// Functions for transformation matrices, and to be exact,
// affine non-reflective similarity transformation matrices.
//

// ### Constants ###

exports.EPSILON = require('./epsilon')

// Identity transform, a kind of multiplication by 1.
exports.IDENTITY = {
  a: 1,
  b: 0,
  x: 0,
  y: 0
}

// Useful transformations
const isqrt2 = 1 / Math.sqrt(2)
exports.ROT45 = { a: isqrt2, b: isqrt2, x: 0, y: 0 }
exports.ROT90 = { a: 0, b: 1, x: 0, y: 0 }
exports.ROT180 = { a: -1, b: 0, x: 0, y: 0 }
exports.ROT270 = { a: 0, b: -1, x: 0, y: 0 }
exports.HALF = { a: 0.5, b: 0, x: 0, y: 0 }
exports.X2 = { a: 2, b: 0, x: 0, y: 0 }

// ### Functions ###

exports.almostEqual =
exports.almostEquals = require('./almostEqual')

exports.create = require('./create')

exports.createFromPolar = require('./createFromPolar')

exports.createFromArray = require('./createFromArray')

exports.equal =
exports.equals = require('./equal')

exports.getRotation = require('./getRotation')

exports.getScale = require('./getScale')

exports.getTranslation = require('./getTranslation')

exports.toArray = require('./toArray')

exports.toMatrix = require('./toMatrix')

exports.toString = require('./toString')

// point
// transform
// transformPoint
// projectPoint
exports.mapPoint = require('./mapPoint')

exports.mapPoints = require('./mapPoints')

exports.mapVector = require('./mapVector')

exports.compose =
exports.multiply = require('./multiply')

exports.inverse = require('./inverse')

exports.scaleBy = require('./scaleBy')

exports.rotateBy = require('./rotateBy')

// exports.addVector = ?
// exports.translate =
exports.translateBy = require('./translateBy')

exports.validate = require('./validate')

Reorder transform functions