1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
void CalculBB(scene_t* scene_a,object_t* object_a)
{
BBOX tmp;
int l,m,n;
int min[3],max[3];
triangle_t* t;
for(tuint_t i = object_a->m_first_triangle; i <= object_a->m_last_triangle; i++) {
t = &scene_a->m_tabTriangle[i];
tmp.m_min.m[0] = scene_a->m_tabPoint[t->m_id_first].m[0];
tmp.m_min.m[1] = scene_a->m_tabPoint[t->m_id_first].m[1];
tmp.m_min.m[2] = scene_a->m_tabPoint[t->m_id_first].m[2];
tmp.m_max.m[0] = scene_a->m_tabPoint[t->m_id_first].m[0];
tmp.m_max.m[1] = scene_a->m_tabPoint[t->m_id_first].m[1];
tmp.m_max.m[2] = scene_a->m_tabPoint[t->m_id_first].m[2];
/*//2éme point
TestBB(t->m_id_second,0,&tmp,&scene_a);
TestBB(t->m_id_second,1,&tmp,&scene_a);
TestBB(t->m_id_second,2,&tmp,&scene_a);
//3éme point
TestBB(t->m_id_third,0,&tmp,&scene_a);
TestBB(t->m_id_third,1,&tmp,&scene_a);
TestBB(t->m_id_third,2,&tmp,&scene_a); */
//2éme point
if(scene_a->m_tabPoint[t->m_id_second].m[0] > tmp.m_max.m[0])
tmp.m_max.m[0] = scene_a->m_tabPoint[t->m_id_second].m[0];
else // <=
if(scene_a->m_tabPoint[t->m_id_second].m[0] < tmp.m_min.m[0])
tmp.m_min.m[0] = scene_a->m_tabPoint[t->m_id_second].m[0];
if(scene_a->m_tabPoint[t->m_id_second].m[1] > tmp.m_max.m[1])
tmp.m_max.m[1] = scene_a->m_tabPoint[t->m_id_second].m[1];
else // <=
if(scene_a->m_tabPoint[t->m_id_second].m[1] < tmp.m_min.m[1])
tmp.m_min.m[1] = scene_a->m_tabPoint[t->m_id_second].m[1];
if(scene_a->m_tabPoint[t->m_id_second].m[2] > tmp.m_max.m[2])
tmp.m_max.m[2] = scene_a->m_tabPoint[t->m_id_second].m[2];
else // <=
if(scene_a->m_tabPoint[t->m_id_second].m[2] < tmp.m_min.m[2])
tmp.m_min.m[2] = scene_a->m_tabPoint[t->m_id_second].m[2];
//3éme point
if(scene_a->m_tabPoint[t->m_id_third].m[0] > tmp.m_max.m[0])
tmp.m_max.m[0] = scene_a->m_tabPoint[t->m_id_third].m[0];
else // <=
if(scene_a->m_tabPoint[t->m_id_third].m[0] < tmp.m_min.m[0])
tmp.m_min.m[0] = scene_a->m_tabPoint[t->m_id_third].m[0];
if(scene_a->m_tabPoint[t->m_id_third].m[1] > tmp.m_max.m[1])
tmp.m_max.m[1] = scene_a->m_tabPoint[t->m_id_third].m[1];
else // <=
if(scene_a->m_tabPoint[t->m_id_third].m[1] < tmp.m_min.m[1])
tmp.m_min.m[1] = scene_a->m_tabPoint[t->m_id_third].m[1];
if(scene_a->m_tabPoint[t->m_id_third].m[2] > tmp.m_max.m[2])
tmp.m_max.m[2] = scene_a->m_tabPoint[t->m_id_third].m[2];
else // <=
if(scene_a->m_tabPoint[t->m_id_third].m[2] < tmp.m_min.m[2])
tmp.m_min.m[2] = scene_a->m_tabPoint[t->m_id_third].m[2];
//stocker dans le tableau en incrémentant case
CONVERT(tmp.m_min,min[0],min[1],min[2]);
CONVERT(tmp.m_max,max[0],max[1],max[2]);
for(l = min[0] ; l <max[0] ; l++)
{
for(m = min[1] ; m < max[1] ; m++)
{
for( n = min[2] ; n < max[2] ; n++)
{
ajouterId(i,l,m,n);
}
}
}
}
} |
Partager