Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/simple_render/update_sgp.cpp @ 26:3f68b2ef4fb0
*** empty log message ***
author | gongo |
---|---|
date | Sun, 10 Feb 2008 18:31:48 +0900 |
parents | |
children | 243ee0a1fe6f |
line wrap: on
line source
#include <iostream> #include <math.h> #include "scene_graph_pack.h" #include "sys.h" using namespace std; /* void matrix4x4(float *xyz, float *xyz1, float *xyz2) //xyz[16] { for(int t=0; t<16; t+=4) { for(int i=0; i<4; i++) { xyz[t+i] = xyz1[t]*xyz2[i] + xyz1[t+1]*xyz2[4+i] + xyz1[t+2]*xyz2[8+i] + xyz1[t+3]*xyz2[12+i]; } } } void get_matrix( float *matrix, float *rxyz, float *txyz, float *stack) { float radx,rady,radz; radx = rxyz[0]*3.14/180; rady = rxyz[1]*3.14/180; radz = rxyz[2]*3.14/180; float sinx = sin(radx); float cosx = cos(radx); float siny = sin(rady); float cosy = cos(rady); float sinz = sin(radz); float cosz = cos(radz); matrix[0] = cosz*cosy+sinz*sinx*siny; matrix[1] =sinz*cosx; matrix[2] = -cosz*siny+sinz*sinx*cosy; matrix[3] = 0; matrix[4] = -sinz*cosy+cosz*sinx*siny; matrix[5] = cosz*cosx; matrix[6] = sinz*siny+cosz*sinx*cosy; matrix[7] = 0; matrix[8] = cosx*siny; matrix[9] = -sinx; matrix[10] = cosx*cosy; matrix[11] = 0; matrix[12] = txyz[0]; matrix[13] = txyz[1]; matrix[14] = txyz[2]; matrix[15] = 1; float m[16]; for(int i=0; i<16; i++) { m[i] = matrix[i]; } if(stack) { matrix4x4(matrix, m, stack); } } */ int update_sgp(SceneGraphPack *sgp, SceneGraphPack *_sgp) { for (int i = 0; i < sgp->info.size; i++) { //(*my_func[node->move])(node); //(*my_func[node->interaction])(node, sgp); if(sgp->node[i].pn != -1) { get_matrix(sgp->node[i].translation, sgp->node[i].angle, sgp->node[i].obj_pos, sgp->node[sgp->node[i].pn].translation); } else { get_matrix(sgp->node[i].translation, sgp->node[i].angle, sgp->node[i].obj_pos, NULL); } } return sizeof(SceneGraphPack); }