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);
}