annotate TaskManager/Test/simple_render/update_sgp.cpp @ 28:243ee0a1fe6f

*** empty log message ***
author gongo
date Mon, 11 Feb 2008 13:32:30 +0900
parents 3f68b2ef4fb0
children e949a536a68d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
1 #include <iostream>
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
2 #include <math.h>
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
3 #include "scene_graph_pack.h"
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
4 #include "sys.h"
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
5 using namespace std;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
6
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
7 /*
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
8 void matrix4x4(float *xyz, float *xyz1, float *xyz2) //xyz[16]
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
9 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
10 for(int t=0; t<16; t+=4)
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
11 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
12 for(int i=0; i<4; i++)
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
13 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
14 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];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
15 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
16 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
17 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
18
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
19 void get_matrix( float *matrix, float *rxyz, float *txyz, float *stack)
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
20 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
21 float radx,rady,radz;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
22 radx = rxyz[0]*3.14/180;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
23 rady = rxyz[1]*3.14/180;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
24 radz = rxyz[2]*3.14/180;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
25
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
26 float sinx = sin(radx);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
27 float cosx = cos(radx);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
28 float siny = sin(rady);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
29 float cosy = cos(rady);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
30 float sinz = sin(radz);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
31 float cosz = cos(radz);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
32
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
33 matrix[0] = cosz*cosy+sinz*sinx*siny;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
34 matrix[1] =sinz*cosx;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
35 matrix[2] = -cosz*siny+sinz*sinx*cosy;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
36 matrix[3] = 0;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
37 matrix[4] = -sinz*cosy+cosz*sinx*siny;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
38 matrix[5] = cosz*cosx;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
39 matrix[6] = sinz*siny+cosz*sinx*cosy;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
40 matrix[7] = 0;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
41 matrix[8] = cosx*siny;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
42 matrix[9] = -sinx;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
43 matrix[10] = cosx*cosy;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
44 matrix[11] = 0;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
45 matrix[12] = txyz[0];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
46 matrix[13] = txyz[1];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
47 matrix[14] = txyz[2];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
48 matrix[15] = 1;
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
49
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
50 float m[16];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
51
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
52 for(int i=0; i<16; i++)
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
53 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
54 m[i] = matrix[i];
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
55 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
56
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
57 if(stack)
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
58 {
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
59 matrix4x4(matrix, m, stack);
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
60 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
61 }
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
62 */
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
63
28
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
64 int
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
65 update_sgp(SceneGraphPack *_sgp, SceneGraphPack *sgp)
26
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
66 {
28
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
67 for (int i = 0; i < sgp->info.size; i++) {
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
68 //(*my_func[node->move])(node);
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
69 //(*my_func[node->interaction])(node, sgp);
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
70
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
71 if (sgp->node[i].pn != -1) {
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
72 get_matrix(sgp->node[i].translation,
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
73 sgp->node[i].angle, sgp->node[i].obj_pos,
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
74 sgp->node[sgp->node[i].pn].translation);
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
75 } else {
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
76 get_matrix(sgp->node[i].translation,
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
77 sgp->node[i].angle, sgp->node[i].obj_pos,
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
78 NULL);
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
79 }
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
80 }
26
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
81
28
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
82 // まあこれは多分駄目なんだけど。
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
83 // in/out と update は分ける必要ある?
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
84 // それはユーザ側で in/out になるように書かせるもの?
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
85 memcpy(_sgp, sgp, sizeof(SceneGraphPack));
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
86
243ee0a1fe6f *** empty log message ***
gongo
parents: 26
diff changeset
87 return sizeof(SceneGraphPack);
26
3f68b2ef4fb0 *** empty log message ***
gongo
parents:
diff changeset
88 }