src/render/SDL_d3dmath.c
changeset 11279 b9b53f45bec6
parent 10737 3406a0f8b041
child 11811 5d94cb6b24d3
equal deleted inserted replaced
11278:37f4d29e155d 11279:b9b53f45bec6
    29 
    29 
    30 Float4X4 MatrixIdentity()
    30 Float4X4 MatrixIdentity()
    31 {
    31 {
    32     Float4X4 m;
    32     Float4X4 m;
    33     SDL_zero(m);
    33     SDL_zero(m);
    34     m._11 = 1.0f;
    34     m.v._11 = 1.0f;
    35     m._22 = 1.0f;
    35     m.v._22 = 1.0f;
    36     m._33 = 1.0f;
    36     m.v._33 = 1.0f;
    37     m._44 = 1.0f;
    37     m.v._44 = 1.0f;
    38     return m;
    38     return m;
    39 }
    39 }
    40 
    40 
    41 Float4X4 MatrixMultiply(Float4X4 M1, Float4X4 M2)
    41 Float4X4 MatrixMultiply(Float4X4 M1, Float4X4 M2)
    42 {
    42 {
    43     Float4X4 m;
    43     Float4X4 m;
    44     m._11 = M1._11 * M2._11 + M1._12 * M2._21 + M1._13 * M2._31 + M1._14 * M2._41;
    44     m.v._11 = M1.v._11 * M2.v._11 + M1.v._12 * M2.v._21 + M1.v._13 * M2.v._31 + M1.v._14 * M2.v._41;
    45     m._12 = M1._11 * M2._12 + M1._12 * M2._22 + M1._13 * M2._32 + M1._14 * M2._42;
    45     m.v._12 = M1.v._11 * M2.v._12 + M1.v._12 * M2.v._22 + M1.v._13 * M2.v._32 + M1.v._14 * M2.v._42;
    46     m._13 = M1._11 * M2._13 + M1._12 * M2._23 + M1._13 * M2._33 + M1._14 * M2._43;
    46     m.v._13 = M1.v._11 * M2.v._13 + M1.v._12 * M2.v._23 + M1.v._13 * M2.v._33 + M1.v._14 * M2.v._43;
    47     m._14 = M1._11 * M2._14 + M1._12 * M2._24 + M1._13 * M2._34 + M1._14 * M2._44;
    47     m.v._14 = M1.v._11 * M2.v._14 + M1.v._12 * M2.v._24 + M1.v._13 * M2.v._34 + M1.v._14 * M2.v._44;
    48     m._21 = M1._21 * M2._11 + M1._22 * M2._21 + M1._23 * M2._31 + M1._24 * M2._41;
    48     m.v._21 = M1.v._21 * M2.v._11 + M1.v._22 * M2.v._21 + M1.v._23 * M2.v._31 + M1.v._24 * M2.v._41;
    49     m._22 = M1._21 * M2._12 + M1._22 * M2._22 + M1._23 * M2._32 + M1._24 * M2._42;
    49     m.v._22 = M1.v._21 * M2.v._12 + M1.v._22 * M2.v._22 + M1.v._23 * M2.v._32 + M1.v._24 * M2.v._42;
    50     m._23 = M1._21 * M2._13 + M1._22 * M2._23 + M1._23 * M2._33 + M1._24 * M2._43;
    50     m.v._23 = M1.v._21 * M2.v._13 + M1.v._22 * M2.v._23 + M1.v._23 * M2.v._33 + M1.v._24 * M2.v._43;
    51     m._24 = M1._21 * M2._14 + M1._22 * M2._24 + M1._23 * M2._34 + M1._24 * M2._44;
    51     m.v._24 = M1.v._21 * M2.v._14 + M1.v._22 * M2.v._24 + M1.v._23 * M2.v._34 + M1.v._24 * M2.v._44;
    52     m._31 = M1._31 * M2._11 + M1._32 * M2._21 + M1._33 * M2._31 + M1._34 * M2._41;
    52     m.v._31 = M1.v._31 * M2.v._11 + M1.v._32 * M2.v._21 + M1.v._33 * M2.v._31 + M1.v._34 * M2.v._41;
    53     m._32 = M1._31 * M2._12 + M1._32 * M2._22 + M1._33 * M2._32 + M1._34 * M2._42;
    53     m.v._32 = M1.v._31 * M2.v._12 + M1.v._32 * M2.v._22 + M1.v._33 * M2.v._32 + M1.v._34 * M2.v._42;
    54     m._33 = M1._31 * M2._13 + M1._32 * M2._23 + M1._33 * M2._33 + M1._34 * M2._43;
    54     m.v._33 = M1.v._31 * M2.v._13 + M1.v._32 * M2.v._23 + M1.v._33 * M2.v._33 + M1.v._34 * M2.v._43;
    55     m._34 = M1._31 * M2._14 + M1._32 * M2._24 + M1._33 * M2._34 + M1._34 * M2._44;
    55     m.v._34 = M1.v._31 * M2.v._14 + M1.v._32 * M2.v._24 + M1.v._33 * M2.v._34 + M1.v._34 * M2.v._44;
    56     m._41 = M1._41 * M2._11 + M1._42 * M2._21 + M1._43 * M2._31 + M1._44 * M2._41;
    56     m.v._41 = M1.v._41 * M2.v._11 + M1.v._42 * M2.v._21 + M1.v._43 * M2.v._31 + M1.v._44 * M2.v._41;
    57     m._42 = M1._41 * M2._12 + M1._42 * M2._22 + M1._43 * M2._32 + M1._44 * M2._42;
    57     m.v._42 = M1.v._41 * M2.v._12 + M1.v._42 * M2.v._22 + M1.v._43 * M2.v._32 + M1.v._44 * M2.v._42;
    58     m._43 = M1._41 * M2._13 + M1._42 * M2._23 + M1._43 * M2._33 + M1._44 * M2._43;
    58     m.v._43 = M1.v._41 * M2.v._13 + M1.v._42 * M2.v._23 + M1.v._43 * M2.v._33 + M1.v._44 * M2.v._43;
    59     m._44 = M1._41 * M2._14 + M1._42 * M2._24 + M1._43 * M2._34 + M1._44 * M2._44;
    59     m.v._44 = M1.v._41 * M2.v._14 + M1.v._42 * M2.v._24 + M1.v._43 * M2.v._34 + M1.v._44 * M2.v._44;
    60     return m;
    60     return m;
    61 }
    61 }
    62 
    62 
    63 Float4X4 MatrixScaling(float x, float y, float z)
    63 Float4X4 MatrixScaling(float x, float y, float z)
    64 {
    64 {
    65     Float4X4 m;
    65     Float4X4 m;
    66     SDL_zero(m);
    66     SDL_zero(m);
    67     m._11 = x;
    67     m.v._11 = x;
    68     m._22 = y;
    68     m.v._22 = y;
    69     m._33 = z;
    69     m.v._33 = z;
    70     m._44 = 1.0f;
    70     m.v._44 = 1.0f;
    71     return m;
    71     return m;
    72 }
    72 }
    73 
    73 
    74 Float4X4 MatrixTranslation(float x, float y, float z)
    74 Float4X4 MatrixTranslation(float x, float y, float z)
    75 {
    75 {
    76     Float4X4 m;
    76     Float4X4 m;
    77     SDL_zero(m);
    77     SDL_zero(m);
    78     m._11 = 1.0f;
    78     m.v._11 = 1.0f;
    79     m._22 = 1.0f;
    79     m.v._22 = 1.0f;
    80     m._33 = 1.0f;
    80     m.v._33 = 1.0f;
    81     m._44 = 1.0f;
    81     m.v._44 = 1.0f;
    82     m._41 = x;
    82     m.v._41 = x;
    83     m._42 = y;
    83     m.v._42 = y;
    84     m._43 = z;
    84     m.v._43 = z;
    85     return m;
    85     return m;
    86 }
    86 }
    87 
    87 
    88 Float4X4 MatrixRotationX(float r)
    88 Float4X4 MatrixRotationX(float r)
    89 {
    89 {
    90     float sinR = SDL_sinf(r);
    90     float sinR = SDL_sinf(r);
    91     float cosR = SDL_cosf(r);
    91     float cosR = SDL_cosf(r);
    92     Float4X4 m;
    92     Float4X4 m;
    93     SDL_zero(m);
    93     SDL_zero(m);
    94     m._11 = 1.0f;
    94     m.v._11 = 1.0f;
    95     m._22 = cosR;
    95     m.v._22 = cosR;
    96     m._23 = sinR;
    96     m.v._23 = sinR;
    97     m._32 = -sinR;
    97     m.v._32 = -sinR;
    98     m._33 = cosR;
    98     m.v._33 = cosR;
    99     m._44 = 1.0f;
    99     m.v._44 = 1.0f;
   100     return m;
   100     return m;
   101 }
   101 }
   102 
   102 
   103 Float4X4 MatrixRotationY(float r)
   103 Float4X4 MatrixRotationY(float r)
   104 {
   104 {
   105     float sinR = SDL_sinf(r);
   105     float sinR = SDL_sinf(r);
   106     float cosR = SDL_cosf(r);
   106     float cosR = SDL_cosf(r);
   107     Float4X4 m;
   107     Float4X4 m;
   108     SDL_zero(m);
   108     SDL_zero(m);
   109     m._11 = cosR;
   109     m.v._11 = cosR;
   110     m._13 = -sinR;
   110     m.v._13 = -sinR;
   111     m._22 = 1.0f;
   111     m.v._22 = 1.0f;
   112     m._31 = sinR;
   112     m.v._31 = sinR;
   113     m._33 = cosR;
   113     m.v._33 = cosR;
   114     m._44 = 1.0f;
   114     m.v._44 = 1.0f;
   115     return m;
   115     return m;
   116 }
   116 }
   117 
   117 
   118 Float4X4 MatrixRotationZ(float r)
   118 Float4X4 MatrixRotationZ(float r)
   119 {
   119 {
   120     float sinR = SDL_sinf(r);
   120     float sinR = SDL_sinf(r);
   121     float cosR = SDL_cosf(r);
   121     float cosR = SDL_cosf(r);
   122     Float4X4 m;
   122     Float4X4 m;
   123     SDL_zero(m);
   123     SDL_zero(m);
   124     m._11 = cosR;
   124     m.v._11 = cosR;
   125     m._12 = sinR;
   125     m.v._12 = sinR;
   126     m._21 = -sinR;
   126     m.v._21 = -sinR;
   127     m._22 = cosR;
   127     m.v._22 = cosR;
   128     m._33 = 1.0f;
   128     m.v._33 = 1.0f;
   129     m._44 = 1.0f;
   129     m.v._44 = 1.0f;
   130     return m;
   130     return m;
   131 
   131 
   132 }
   132 }
   133 
   133 
   134 #endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11) && !SDL_RENDER_DISABLED */
   134 #endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11) && !SDL_RENDER_DISABLED */