1/*---------------------------------------------------------------------------*
2  Project:  Horizon
3  File:     math_Matrix22.ipp
4
5  Copyright (C)2009-2010 Nintendo Co., Ltd.  All rights reserved.
6
7  These coded instructions, statements, and computer programs contain
8  proprietary information of Nintendo of America Inc. and/or Nintendo
9  Company Ltd., and are protected by Federal copyright law.  They may
10  not be disclosed to third parties or copied or duplicated in any form,
11  in whole or in part, without the prior written consent of Nintendo.
12
13  $Revision: 13623 $
14 *---------------------------------------------------------------------------*/
15namespace nn {
16namespace math {
17
18/* ------------------------------------------------------------------------
19        MTX22
20   ------------------------------------------------------------------------ */
21/* Please see man pages for details
22
23
24*/
25
26/*
27
28
29
30
31
32 */
33NN_MATH_INLINE bool
34MTX22IsIdentity(const MTX22* p)
35{
36    return p->f._00 == 1.f && p->f._01 == 0.f &&
37           p->f._10 == 0.f && p->f._11 == 1.f;
38}
39
40/*
41
42
43
44
45
46
47 */
48NN_MATH_INLINE MTX22*
49MTX22Copy(MTX22* pOut, const MTX22* p)
50{
51    NN_NULL_ASSERT( pOut );
52    NN_NULL_ASSERT( p );
53
54    if (pOut != p)
55    {
56        *pOut = *p;
57    }
58
59    return pOut;
60}
61
62/*
63
64
65
66
67
68 */
69NN_MATH_INLINE MTX22*
70MTX22Zero(MTX22* pOut)
71{
72    NN_NULL_ASSERT( pOut );
73
74    pOut->f._00 = pOut->f._01 =
75    pOut->f._10 = pOut->f._11 = 0.f;
76    return pOut;
77}
78
79/*
80
81
82
83
84
85 */
86NN_MATH_INLINE MTX22*
87MTX22Identity(MTX22* pOut)
88{
89    NN_NULL_ASSERT( pOut );
90
91    MTX22Copy(pOut, MTX22::Identity());
92
93    return pOut;
94}
95
96/*
97
98
99
100
101
102
103
104
105 */
106NN_MATH_INLINE MTX22*
107MTX22MAdd(MTX22* pOut, f32 t, const MTX22* p1, const MTX22* p2)
108{
109    NN_NULL_ASSERT( pOut );
110    NN_NULL_ASSERT( p1 );
111    NN_NULL_ASSERT( p2 );
112
113    pOut->f._00 = t * p1->f._00 + p2->f._00;
114    pOut->f._01 = t * p1->f._01 + p2->f._01;
115
116    pOut->f._10 = t * p1->f._10 + p2->f._10;
117    pOut->f._11 = t * p1->f._11 + p2->f._11;
118
119    return pOut;
120}
121
122/*
123
124*/
125
126}  // namespace math
127}  // namespace nn
128