comparison ps2util.cc @ 146:d1ddd095ab03

draw dot hit cource -rainbow-
author e085768
date Fri, 29 Jul 2011 15:18:48 +0900
parents 42337585fb7c
children
comparison
equal deleted inserted replaced
143:be127b7d1812 146:d1ddd095ab03
95 m[0][0] = m[1][1] = m[2][2] = m[3][3] = 1.0; 95 m[0][0] = m[1][1] = m[2][2] = m[3][3] = 1.0;
96 } 96 }
97 97
98 /* 98 /*
99 Y軸を中心とした行列の回転 99 Y軸を中心とした行列の回転
100 回転角 rx より X 軸を中心とした回転マトリックスを求めて、マトリックス m1 に左側から乗算して、その結果をマトリックス m0 に与える。 100 回転角 rx より X 軸を中心とした回転マトリックスを求めて、マトリックス m1 に左側から乗算して、その結果をマトリックス m0 に与える。
101 X 軸だけでなく Y 軸、Z 軸を中心とした関数もある。また3ついっんに回転させる関数もある。 101 X 軸だけでなく Y 軸、Z 軸を中心とした関数もある。また3ついっんに回転させる関数もある。
102 */ 102 */
103 void ps2_vu0_rot_matrix_y(FMATRIX result, FMATRIX m, float radian) 103 void ps2_vu0_rot_matrix_y(FMATRIX result, FMATRIX m, float radian)
104 { 104 {
105 // 回転行列を作ってかけてやれば良い 105 // 回転行列を作ってかけてやれば良い
121 m[0][0] = cosf(radian); 121 m[0][0] = cosf(radian);
122 m[2][2] = cosf(radian); 122 m[2][2] = cosf(radian);
123 m[0][2] = -sinf(radian); 123 m[0][2] = -sinf(radian);
124 m[2][0] = sinf(radian); 124 m[2][0] = sinf(radian);
125 125
126
126 FMATRIX m1;// = m; 127 FMATRIX m1;// = m;
127 memcpy(&m1, m, sizeof(FMATRIX)); 128 memcpy(&m1, m, sizeof(FMATRIX));
128 129
129 ps2_vu0_mul_matrix(result, m1, m); 130 ps2_vu0_mul_matrix(result, m1, m);
130 } 131 }
161 162
162 // 外積 163 // 外積
163 void ps2_vu0_outer_product(FVECTOR result, FVECTOR v0, FVECTOR v1) 164 void ps2_vu0_outer_product(FVECTOR result, FVECTOR v0, FVECTOR v1)
164 { 165 {
165 result[0] = v0[1] * v1[2] - v0[2] * v1[1] ; 166 result[0] = v0[1] * v1[2] - v0[2] * v1[1] ;
166 result[1] = v0[0] * v1[2] - v0[2] * v1[0] ; 167
168 // result[1]の計算はどっちがいいんでしょ?
169 // result[1] = v0[0] * v1[2] - v0[2] * v1[0] ;
170 result[1] = v0[2] * v1[0] - v0[0] * v1[2];
167 result[2] = v0[0] * v1[1] - v0[1] * v1[0] ; 171 result[2] = v0[0] * v1[1] - v0[1] * v1[0] ;
168 result[3] = 1; 172 result[3] = 1;
169 } 173 }
170 174
171 // 内積 175 // 内積