32 | 30 | |
33 | 31 | CMatrix3D::CMatrix3D(float a11,float a12,float a13,float a14,float a21,float a22,float a23,float a24, |
34 | 32 | float a31,float a32,float a33,float a34,float a41,float a42,float a43,float a44) |
35 | | { |
36 | | _11=a11; |
37 | | _12=a12; |
38 | | _13=a13; |
39 | | _14=a14; |
| 33 | : _11(a11), _12(a12), _13(a13), _14(a14), |
| 34 | _21(a21), _22(a22), _23(a23), _24(a24), |
| 35 | _31(a31), _32(a32), _33(a33), _34(a34), |
| 36 | _41(a41), _42(a42), _43(a43), _44(a44) |
| 37 | { } |
196 | | CMatrix3D Temp; |
197 | | Temp.SetXRotation (angle); |
198 | | Concatenate(Temp); |
| 177 | const float Cos = cosf (angle); |
| 178 | const float Sin = sinf (angle); |
| 179 | const float tmp_21 = _21; |
| 180 | const float tmp_22 = _22; |
| 181 | const float tmp_23 = _23; |
| 182 | const float tmp_24 = _24; |
| 183 | |
| 184 | _21 = Cos*_21 - Sin*_31; |
| 185 | _22 = Cos*_22 - Sin*_32; |
| 186 | _23 = Cos*_23 - Sin*_33; |
| 187 | _24 = Cos*_24 - Sin*_34; |
| 188 | |
| 189 | _31 = Sin*tmp_21 + Cos*_31; |
| 190 | _32 = Sin*tmp_22 + Cos*_32; |
| 191 | _33 = Sin*tmp_23 + Cos*_33; |
| 192 | _34 = Sin*tmp_24 + Cos*_34; |
203 | | CMatrix3D Temp; |
204 | | Temp.SetYRotation (angle); |
205 | | Concatenate(Temp); |
| 197 | const float Cos = cosf (angle); |
| 198 | const float Sin = sinf (angle); |
| 199 | const float tmp_11 = _11; |
| 200 | const float tmp_12 = _12; |
| 201 | const float tmp_13 = _13; |
| 202 | const float tmp_14 = _14; |
| 203 | |
| 204 | _11 = Cos*_11 + Sin*_31; |
| 205 | _12 = Cos*_12 + Sin*_32; |
| 206 | _13 = Cos*_13 + Sin*_33; |
| 207 | _14 = Cos*_14 + Sin*_34; |
| 208 | |
| 209 | _31 = -Sin*tmp_11 + Cos*_31; |
| 210 | _32 = -Sin*tmp_12 + Cos*_32; |
| 211 | _33 = -Sin*tmp_13 + Cos*_33; |
| 212 | _34 = -Sin*tmp_14 + Cos*_34; |
210 | | CMatrix3D Temp; |
211 | | Temp.SetZRotation(angle); |
212 | | Concatenate(Temp); |
| 217 | const float Cos = cosf (angle); |
| 218 | const float Sin = sinf (angle); |
| 219 | const float tmp_11 = _11; |
| 220 | const float tmp_12 = _12; |
| 221 | const float tmp_13 = _13; |
| 222 | const float tmp_14 = _14; |
| 223 | |
| 224 | _11 = Cos*_11 - Sin*_21; |
| 225 | _12 = Cos*_12 - Sin*_22; |
| 226 | _13 = Cos*_13 - Sin*_23; |
| 227 | _14 = Cos*_14 - Sin*_24; |
| 228 | |
| 229 | _21 = Sin*tmp_11 + Cos*_21; |
| 230 | _22 = Sin*tmp_12 + Cos*_22; |
| 231 | _23 = Sin*tmp_13 + Cos*_23; |
| 232 | _24 = Sin*tmp_14 + Cos*_24; |
407 | | dst._data[0] = tmp[0]*src[5] + tmp[3]*src[6] + tmp[4]*src[7]; |
408 | | dst._data[0] -= tmp[1]*src[5] + tmp[2]*src[6] + tmp[5]*src[7]; |
409 | | dst._data[1] = tmp[1]*src[4] + tmp[6]*src[6] + tmp[9]*src[7]; |
410 | | dst._data[1] -= tmp[0]*src[4] + tmp[7]*src[6] + tmp[8]*src[7]; |
411 | | dst._data[2] = tmp[2]*src[4] + tmp[7]*src[5] + tmp[10]*src[7]; |
412 | | dst._data[2] -= tmp[3]*src[4] + tmp[6]*src[5] + tmp[11]*src[7]; |
413 | | dst._data[3] = tmp[5]*src[4] + tmp[8]*src[5] + tmp[11]*src[6]; |
414 | | dst._data[3] -= tmp[4]*src[4] + tmp[9]*src[5] + tmp[10]*src[6]; |
415 | | dst._data[4] = tmp[1]*src[1] + tmp[2]*src[2] + tmp[5]*src[3]; |
416 | | dst._data[4] -= tmp[0]*src[1] + tmp[3]*src[2] + tmp[4]*src[3]; |
417 | | dst._data[5] = tmp[0]*src[0] + tmp[7]*src[2] + tmp[8]*src[3]; |
418 | | dst._data[5] -= tmp[1]*src[0] + tmp[6]*src[2] + tmp[9]*src[3]; |
419 | | dst._data[6] = tmp[3]*src[0] + tmp[6]*src[1] + tmp[11]*src[3]; |
420 | | dst._data[6] -= tmp[2]*src[0] + tmp[7]*src[1] + tmp[10]*src[3]; |
421 | | dst._data[7] = tmp[4]*src[0] + tmp[9]*src[1] + tmp[10]*src[2]; |
422 | | dst._data[7] -= tmp[5]*src[0] + tmp[8]*src[1] + tmp[11]*src[2]; |
| 396 | dst._data[0] = (tmp[0]-tmp[1])*src[5] + (tmp[3]-tmp[2])*src[6] + (tmp[4]-tmp[5])*src[7]; |
| 397 | dst._data[1] = (tmp[1]-tmp[0])*src[4] + (tmp[6]-tmp[7])*src[6] + (tmp[9]-tmp[8])*src[7]; |
| 398 | dst._data[2] = (tmp[2]-tmp[3])*src[4] + (tmp[7]-tmp[6])*src[5] + (tmp[10]-tmp[11])*src[7]; |
| 399 | dst._data[3] = (tmp[5]-tmp[4])*src[4] + (tmp[8]-tmp[9])*src[5] + (tmp[11]-tmp[10])*src[6]; |
| 400 | dst._data[4] = (tmp[1]-tmp[0])*src[1] + (tmp[2]-tmp[3])*src[2] + (tmp[5]-tmp[4])*src[3]; |
| 401 | dst._data[5] = (tmp[0]-tmp[1])*src[0] + (tmp[7]-tmp[6])*src[2] + (tmp[8]-tmp[9])*src[3]; |
| 402 | dst._data[6] = (tmp[3]-tmp[2])*src[0] + (tmp[6]-tmp[7])*src[1] + (tmp[11]-tmp[10])*src[3]; |
| 403 | dst._data[7] = (tmp[4]-tmp[5])*src[0] + (tmp[9]-tmp[8])*src[1] + (tmp[10]-tmp[11])*src[2]; |
439 | | dst._data[8] = tmp[0]*src[13] + tmp[3]*src[14] + tmp[4]*src[15]; |
440 | | dst._data[8] -= tmp[1]*src[13] + tmp[2]*src[14] + tmp[5]*src[15]; |
441 | | dst._data[9] = tmp[1]*src[12] + tmp[6]*src[14] + tmp[9]*src[15]; |
442 | | dst._data[9] -= tmp[0]*src[12] + tmp[7]*src[14] + tmp[8]*src[15]; |
443 | | dst._data[10] = tmp[2]*src[12] + tmp[7]*src[13] + tmp[10]*src[15]; |
444 | | dst._data[10]-= tmp[3]*src[12] + tmp[6]*src[13] + tmp[11]*src[15]; |
445 | | dst._data[11] = tmp[5]*src[12] + tmp[8]*src[13] + tmp[11]*src[14]; |
446 | | dst._data[11]-= tmp[4]*src[12] + tmp[9]*src[13] + tmp[10]*src[14]; |
447 | | dst._data[12] = tmp[2]*src[10] + tmp[5]*src[11] + tmp[1]*src[9]; |
448 | | dst._data[12]-= tmp[4]*src[11] + tmp[0]*src[9] + tmp[3]*src[10]; |
449 | | dst._data[13] = tmp[8]*src[11] + tmp[0]*src[8] + tmp[7]*src[10]; |
450 | | dst._data[13]-= tmp[6]*src[10] + tmp[9]*src[11] + tmp[1]*src[8]; |
451 | | dst._data[14] = tmp[6]*src[9] + tmp[11]*src[11] + tmp[3]*src[8]; |
452 | | dst._data[14]-= tmp[10]*src[11] + tmp[2]*src[8] + tmp[7]*src[9]; |
453 | | dst._data[15] = tmp[10]*src[10] + tmp[4]*src[8] + tmp[9]*src[9]; |
454 | | dst._data[15]-= tmp[8]*src[9] + tmp[11]*src[10] + tmp[5]*src[8]; |
| 420 | dst._data[8] = (tmp[0]-tmp[1])*src[13] + (tmp[3]-tmp[2])*src[14] + (tmp[4]-tmp[5])*src[15]; |
| 421 | dst._data[9] = (tmp[1]-tmp[0])*src[12] + (tmp[6]-tmp[7])*src[14] + (tmp[9]-tmp[8])*src[15]; |
| 422 | dst._data[10] = (tmp[2]-tmp[3])*src[12] + (tmp[7]-tmp[6])*src[13] + (tmp[10]-tmp[11])*src[15]; |
| 423 | dst._data[11] = (tmp[5]-tmp[4])*src[12] + (tmp[8]-tmp[9])*src[13] + (tmp[11]-tmp[10])*src[14]; |
| 424 | dst._data[12] = (tmp[2]-tmp[3])*src[10] + (tmp[5]-tmp[4])*src[11] + (tmp[1]-tmp[0])*src[9]; |
| 425 | dst._data[13] = (tmp[7]-tmp[6])*src[10] + (tmp[8]-tmp[9])*src[11] + (tmp[0]-tmp[1])*src[8]; |
| 426 | dst._data[14] = (tmp[6]-tmp[7])*src[9] + (tmp[11]-tmp[10])*src[11] + (tmp[3]-tmp[2])*src[8]; |
| 427 | dst._data[15] = (tmp[10]-tmp[11])*src[10] + (tmp[4]-tmp[5])*src[8] + (tmp[9]-tmp[8])*src[9]; |