public static Arbol[] GenerarArbolesAleatorios(int cantidad) { Arbol[] arboles = new Arbol[cantidad]; for (int i = 0; i < cantidad; ++i) { Punto[] formaCopa = new Punto[FORMA_COPA_DEFAULT.Length]; for (int j = 0; j < formaCopa.Length; ++j) { if (j == 0 || j == formaCopa.Length - 1) // siempre terminan y empiezan en el mismo lugar { formaCopa[j] = new Punto( Arbol.FORMA_COPA_DEFAULT[j].X, Arbol.FORMA_COPA_DEFAULT[j].Y, Arbol.FORMA_COPA_DEFAULT[j].Z ); } else { double nuevoX = Arbol.FORMA_COPA_DEFAULT[j].X + MathUtils.RandomBetween(0f, +2.0f); double nuevoY = Arbol.FORMA_COPA_DEFAULT[j].Y; double nuevoZ = Arbol.FORMA_COPA_DEFAULT[j].Z; formaCopa[j] = new Punto( nuevoX > MINIMO_RADIO ? nuevoX : MINIMO_RADIO, nuevoY, nuevoZ ); } } double longitudTronco = LONGITUD_TRONCO_DEFAULT + MathUtils.RandomBetween(0f, +2.5f); Arbol arbol = new Arbol(longitudTronco, formaCopa); arboles[i] = arbol; } return(arboles); }
public static Arbol[] GenerarArbolesAleatorios(int cantidad) { Arbol[] arboles = new Arbol[cantidad]; for (int i = 0; i < cantidad; ++i) { Punto[] formaCopa = new Punto[FORMA_COPA_DEFAULT.Length]; for (int j = 0; j < formaCopa.Length; ++j) { if (j == 0 || j == formaCopa.Length - 1) // siempre terminan y empiezan en el mismo lugar { formaCopa[j] = new Punto( Arbol.FORMA_COPA_DEFAULT[j].X, Arbol.FORMA_COPA_DEFAULT[j].Y, Arbol.FORMA_COPA_DEFAULT[j].Z ); } else { double nuevoX = Arbol.FORMA_COPA_DEFAULT[j].X + MathUtils.RandomBetween(0f, +2.0f); double nuevoY = Arbol.FORMA_COPA_DEFAULT[j].Y; double nuevoZ = Arbol.FORMA_COPA_DEFAULT[j].Z; formaCopa[j] = new Punto( nuevoX > MINIMO_RADIO ? nuevoX : MINIMO_RADIO, nuevoY, nuevoZ ); } } double longitudTronco = LONGITUD_TRONCO_DEFAULT + MathUtils.RandomBetween(0f, +2.5f); Arbol arbol = new Arbol(longitudTronco, formaCopa); arboles[i] = arbol; } return arboles; }