Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }