36 #ifndef __CU_AFFINE2_H__
37 #define __CU_AFFINE2_H__
41 #include "CUMathBase.h"
79 #pragma mark Constructors
99 Affine2(
float m11,
float m12,
float m21,
float m22,
float tx,
float ty);
129 #pragma mark Static Constructors
316 Affine2&
set(
float m11,
float m12,
float m21,
float m22,
float tx,
float ty);
359 #pragma mark Static Arithmetic
428 #pragma mark Arithmetic
439 return *(
add(*
this,v,
this));
465 return *(
multiply(*
this,scalar,
this));
492 return *(
invert(*
this,
this));
511 #pragma mark Operators
522 return *(
add(*
this,v,
this));
548 return *(
multiply(*
this,scalar,
this));
579 return *(
add(*
this,v,&result));
595 return *(
subtract(*
this,v,&result));
611 return *(
multiply(*
this,scalar,&result));
630 return *(
multiply(*
this,aff,&result));
635 #pragma mark Comparisons
659 bool equals(
const Affine2& mat,
float variance=CU_MATH_EPSILON)
const;
691 #pragma mark Affine Attributes
727 return m[0]*m[3]-m[2]*m[1];
746 decompose(*
this,&result,
nullptr,
nullptr);
760 decompose(*
this,
nullptr,&result,
nullptr);
775 decompose(*
this,
nullptr,
nullptr,&result);
780 #pragma mark Vector Operations
818 return *(
transform(*
this,point,&result));
838 #pragma mark Static Transform Manipulation
984 #pragma mark Matrix Transforms
998 return *(
rotate(*
this,angle,
this));
1012 return *(
scale(*
this,value,
this));
1026 return *(
scale(*
this,s,
this));
1041 return *(
scale(*
this,sx,sy,
this));
1075 #pragma mark Conversion Methods
1086 std::string
toString(
bool verbose =
false)
const;
1092 operator Mat4()
const;
1133 #pragma mark Vector Operations
static Affine2 * multiply(const Affine2 &mat, float scalar, Affine2 *dst)
float getDeterminant() const
Definition: CUAffine2.h:726
Affine2 & subtract(const Vec2 &v)
Definition: CUAffine2.h:451
~Affine2()
Definition: CUAffine2.h:125
Vec2 & operator*=(Vec2 &v, const Affine2 &m)
Definition: CUAffine2.h:1145
Affine2 & translate(float tx, float ty)
Definition: CUAffine2.h:1069
std::string toString(bool verbose=false) const
Vec2 transform(const Vec2 &point) const
Definition: CUAffine2.h:816
static Affine2 * translate(const Affine2 &aff, float tx, float ty, Affine2 *dst)
Definition: CUAffine2.h:950
Affine2 & rotate(float angle)
Definition: CUAffine2.h:997
Affine2 & operator=(const float *array)
Definition: CUAffine2.h:300
Affine2 & scale(float sx, float sy)
Definition: CUAffine2.h:1040
Definition: CUAffine2.h:63
Affine2 & multiply(const Affine2 &aff)
Definition: CUAffine2.h:479
const Affine2 operator*(const Affine2 &aff) const
Definition: CUAffine2.h:628
bool operator==(const Affine2 &aff) const
Definition: CUAffine2.h:672
static const Affine2 ZERO
Definition: CUAffine2.h:72
static Affine2 * scale(const Affine2 &aff, float value, Affine2 *dst)
Definition: CUAffine2.h:872
const Affine2 operator+(const Vec2 &v) const
Definition: CUAffine2.h:577
Affine2 & translate(const Vec2 &t)
Definition: CUAffine2.h:1054
Affine2 & operator*=(const Affine2 &aff)
Definition: CUAffine2.h:562
bool isExactly(const Affine2 &aff) const
Affine2 getInverse() const
Definition: CUAffine2.h:504
static Affine2 createRotation(float angle)
Definition: CUAffine2.h:208
Affine2 & operator-=(const Vec2 &v)
Definition: CUAffine2.h:534
static Affine2 * translate(const Affine2 &aff, const Vec2 &t, Affine2 *dst)
Definition: CUAffine2.h:930
bool isInvertible(float variance=CU_MATH_EPSILON) const
Definition: CUAffine2.h:714
static Affine2 createScale(float sx, float sy)
Definition: CUAffine2.h:160
static Affine2 * rotate(const Affine2 &aff, float angle, Affine2 *dst)
Definition: CUAffine2.h:853
const Affine2 operator*(float scalar) const
Definition: CUAffine2.h:609
static Vec2 * transform(const Affine2 &aff, const Vec2 &point, Vec2 *dst)
static Affine2 createTranslation(const Vec2 &trans)
Definition: CUAffine2.h:233
Affine2 & scale(const Vec2 &s)
Definition: CUAffine2.h:1025
bool equals(const Affine2 &mat, float variance=CU_MATH_EPSILON) const
float m[4]
Definition: CUAffine2.h:67
Affine2 & invert()
Definition: CUAffine2.h:491
Affine2 & operator+=(const Vec2 &v)
Definition: CUAffine2.h:521
Vec2 offset
Definition: CUAffine2.h:69
Affine2 & operator*=(float scalar)
Definition: CUAffine2.h:547
static const Affine2 IDENTITY
Definition: CUAffine2.h:76
Vec2 getScale() const
Definition: CUAffine2.h:744
Vec2 getTranslation() const
Definition: CUAffine2.h:773
static bool decompose(const Affine2 &mat, Vec2 *scale, float *rot, Vec2 *trans)
static Affine2 * scale(const Affine2 &aff, const Vec2 &s, Affine2 *dst)
Definition: CUAffine2.h:891
Affine2 & add(const Vec2 &v)
Definition: CUAffine2.h:438
Affine2 & set(float m11, float m12, float m21, float m22, float tx, float ty)
static Affine2 createTranslation(float tx, float ty)
Definition: CUAffine2.h:256
int operator*(Font::Style value)
Definition: CUFont.h:1503
static Affine2 * subtract(const Affine2 &m1, const Vec2 &v, Affine2 *dst)
static const Affine2 ONE
Definition: CUAffine2.h:74
static Affine2 createScale(float scale)
Definition: CUAffine2.h:137
Affine2 & scale(float value)
Definition: CUAffine2.h:1011
static Affine2 * add(const Affine2 &m, const Vec2 &v, Affine2 *dst)
bool operator!=(const Affine2 &aff) const
Definition: CUAffine2.h:686
static Affine2 * scale(const Affine2 &aff, float sx, float sy, Affine2 *dst)
Definition: CUAffine2.h:911
Affine2 & operator=(const Affine2 &mat)
Definition: CUAffine2.h:282
Definition: CUAnimationNode.h:52
static Affine2 createScale(const Vec2 &scale)
Definition: CUAffine2.h:183
Affine2 & multiply(float scalar)
Definition: CUAffine2.h:464
bool isIdentity(float variance=0.0f) const
float getRotation() const
Definition: CUAffine2.h:758
const Affine2 operator-(const Vec2 &v) const
Definition: CUAffine2.h:593