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