| double x; mov [foo 4], 0 unsigned int i; mov eax, i x = i; mov [foo], eax flid qword ptr [foo] fstp qword ptr [x] |
| double x; fild dword ptr [i] int i; fstp qword ptr [x] hot007.com x = i; |
| int i; mov eax, i i = i / 4; cdq and edx, 3 add eax, edx sar eax, 2 mov i, eax |
| unsigned int i; shr i, 2 i = i / 4; |
| while (1); mov eax,1 test eax,eax je foo 23h jmp foo 18h |
| for (;;); jmp foo 23h |
复制于hot007.com
|
typedef struct www.hot007.com dp = vv->;w * *m ; *res = dp; // 写入转换了的 z dp = vv->;x * *m ; dp = vv->;y * *m ; dp = vv->;z * *m ; dp = vv->;w * *m ; *res = dp; // 写入转换了的 w vv ; // 下一个矢量 m -= 16; } } typedef struct { float x,y,z,w; } VERTEX; typedef struct { float m[4][4]; } MATRIX; void XForm (float* res, const float* v, const float* m, int nNumVerts) { int i; const VERTEX* vv = (VERTEX*)v; const MATRIX* mm = (MATRIX*)m; VERTEX* rr = (VERTEX*)res; for (i = 0; i <; nNumVerts; i ) { rr->;x = vv->;x * mm->;m[0][0] vv->;y * mm->;m[0][1] vv->;z * mm->;m[0][2] vv->;w * mm->;m[0][3]; rr->;y = vv->;x * mm->;m[1][0] vv->;y * mm->;m[1][1] 007网络教程网 vv->;z * mm->;m[1][2] vv->;w * mm->;m[1][3]; rr->;z = vv->;x * mm->;m[2][0] vv->;y * mm->;m[2][1] vv->;z * mm->;m[2][2] vv->;w * mm->;m[2][3]; rr->;w = vv->;x * mm->;m[3][0] vv->;y * mm->;m[3][1] vv->;z * mm->;m[3][2] vv->;w * mm->;m[3][3]; } } www.jc567.cn
|
| // 3D转化:把矢量 V 和 4x4 矩阵 M 相乘 for (i = 0; i <; 4; i ) { r[i] = 0; for (j = 0; j <; 4; j ) { r[i] = M[j][i]*V[j]; } } r[0] = M[0][0]*V[0] M[1][0]*V[1] M[2][0]*V[2] M[3][0]*V[3]; r[1] = M[0][1]*V[0] M[1][1]*V[1] M[2][1]*V[2] M[3][1]*V[3]; 文章来源于www.hot007.com r[2] = M[0][2]*V[0] M[1][2]*V[1] M[2][2]*V[2] M[3][2]*V[3]; r[3] = M[0][3]*V[0] M[1][3]*V[1] M[2][3]*V[2] M[3][3]*v[3]; |
| float x[VECLEN], y[VECLEN], z[VECLEN]; ...... for (unsigned int k = 1; k <; VECLEN; k ) { x[k] = x[k-1] y[k]; www.jc567.cn } for (k = 1; k <; VECLEN; k ) { x[k] = z[k] * (y[k] - x[k-1]); } float x[VECLEN], y[VECLEN], z[VECLEN]; ...... float t(x[0]); for (unsigned int k = 1; k <; VECLEN; k ) { t = t y[k]; x[k] = t; } t = x[0]; for (k = 1; k <; VECLEN; k ) { t = z[k] * (y[k] - t); x[k] = t; } |
| int days_in_month, short_months, normal_months, long_months; hot007.com ...... switch (days_in_month) { case 28: case 29: short_months ; break; case 30: normal_months ; break; case 31: long_months ; break; default: cout <;<; ";month has fewer than 28 or more than 31 days"; <;<; endl; break; } int days_in_month, short_months, normal_months, long_months; ...... switch (days_in_month) { case 31: long_months ; break; case 30: normal_months ; break; case 28: case 29: short_months ; break; default: cout <;<; ";month has fewer than 28 or more than 31 days"; <;<; endl; break; } |