// volumi multipli separati public override ArrayList InitDops() { ArrayList dops = new ArrayList(); VolumeSubdivision tmp_dop; numdops = 0; int i, j, dop_i, dop_j; int dopsize = 3; for(dop_i = 0; dop_i < (nodesx / dopsize); dop_i++) { for(dop_j = 0; dop_j < (nodesy / dopsize); dop_j++) { numdops++; tmp_dop = new BoundingBox(texture_id, pw.GetVertexCoords(dopsize * dop_i, dopsize * dop_j)); for(i = 0; (i < dopsize-1) && ( i+dopsize*dop_i< nodesx); i++) { for(j = 0; (j < dopsize-1) && ( j+dopsize*dop_j< nodesy); j++) { tmp_dop.AddVertex(pw.GetVertexCoords(dopsize * dop_i + i, dopsize * dop_j + j), convertXYIndexesToInd(dopsize * dop_i + i , dopsize * dop_j + j)); } } dops.Add(tmp_dop); } } Console.WriteLine("Aggiunta di " + dops.Count + "DOPs"); return dops; }
// // passa al gestore dei volumi i punti dell'oggetto public override VolumeSubdivision InitDop() { // un unico volume int i; float[] tmp; tmp = new float[3] {points[0,0],points[0,1],points[0,2]}; VolumeSubdivision dop = new BoundingBox(0, tmp); for(i = 0; i < 4; i++) { tmp = new float[3] { points[i, 0], points[i, 1], points[i, 2] }; dop.AddVertex(tmp, i); } return dop; }
// passa al gestore dei volumi i punti dell'oggetto public override VolumeSubdivision InitDop() { // un unico volume VolumeSubdivision dop = new BoundingBox(texture_id, pw.GetVertexCoords(0, 0)); numdops = 1; int i,j; for(i = 0; i < nodesx; i++) { for(j = 0; j < nodesy-1; j++) { // assegno per ora ad un unico volume dop.AddVertex(pw.GetVertexCoords(i, j), i+j*nodesx); // meglio più volumi separati... } } return dop; }