コード例 #1
0
    public void esRecorribleTest()
    {
        ObtenerMapa mapa = new ObtenerMapa();
        bool        comprobar;
        Vector3     posicion;

        mapa.setRadio(0.5f);

        posicion  = new Vector3(45.0f, 0.0f, 0.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsTrue(comprobar, "1) No es recorrible y debia serlo.");

        posicion  = new Vector3(45.0f, 0.0f, 40.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsTrue(comprobar, "2) No es recorrible y debia serlo.");

        posicion  = new Vector3(-45.0f, 0.0f, -40.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsTrue(comprobar, "3) No es recorrible y debia serlo.");

        posicion  = new Vector3(0.0f, 0.0f, 0.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsFalse(comprobar, "4) No es obstaculo y debia serlo.");

        posicion  = new Vector3(-31.0f, 0.0f, -25.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsFalse(comprobar, "5) No es obstaculo y debia serlo.");

        posicion  = new Vector3(-4.0f, 0.0f, -38.0f);
        comprobar = mapa.esRecorrible(posicion);
        Assert.IsFalse(comprobar, "6) No es obstaculo y debia serlo.");
    }
コード例 #2
0
    public void lineaVisionTest()
    {
        ObtenerMapa mapa = new ObtenerMapa();
        bool        comprobar;
        Vector3     posicion1;
        Vector3     posicion2;

        mapa.setRadio(0.5f);

        posicion1 = new Vector3(45.0f, 0.0f, 0.0f);
        posicion2 = new Vector3(0.0f, 0.0f, 0.0f);
        comprobar = mapa.lineaVision(posicion1, posicion2);
        Assert.IsFalse(comprobar, "7) No deberia haber linea de vision.");

        posicion1 = new Vector3(45.0f, 0.0f, 40.0f);
        posicion2 = new Vector3(-31.0f, 0.0f, -25.0f);
        comprobar = mapa.lineaVision(posicion1, posicion2);
        Assert.IsFalse(comprobar, "8) No deberia haber linea de vision.");

        posicion1 = new Vector3(-45.0f, 0.0f, -40.0f);
        posicion2 = new Vector3(-4.0f, 0.0f, -38.0f);
        comprobar = mapa.lineaVision(posicion1, posicion2);
        Assert.IsFalse(comprobar, "9) No deberia haber linea de vision.");

        posicion1 = new Vector3(-45.0f, 0.0f, 45.0f);
        posicion2 = new Vector3(45.0f, 0.0f, 45.0f);
        comprobar = mapa.lineaVision(posicion1, posicion2);
        Assert.IsTrue(comprobar, "9) No deberia haber obstaculos en el camino.");

        posicion1 = new Vector3(45.0f, 0.0f, 0.0f);
        posicion2 = new Vector3(45.0f, 0.0f, 40.0f);
        comprobar = mapa.lineaVision(posicion1, posicion2);
        Assert.IsTrue(comprobar, "10) No deberia haber obstaculos en el camino.");
    }
コード例 #3
0
    public override void iniciarCalcularRuta(Vector3 v_inicio, Vector3 v_meta, float v_angulo_coche, ObtenerMapa v_mapa, Parrilla v_parrilla, float p_peso, int tam_parrilla, int v_ancho, int v_largo, bool v_dibujar_casillas)
    {
        Vector3[] array_vertices;

        dibujar_casillas = v_dibujar_casillas;

        ancho = v_ancho;
        largo = v_largo;

        //cerrados = new Cerrados (ancho, largo);
        cerrados  = new Cerrados();
        sucesores = new List <Nodo> ();
        abiertos  = new Abiertos(tam_parrilla, ancho, largo);
        //abiertos = new Abiertos (tam_parrilla);

        peso = p_peso;

        abiertos.getEmpty();
        cerrados.getEmpty();

        vector_inicio = v_inicio;
        vector_meta   = v_meta;
        mapa          = v_mapa;
        parrilla      = v_parrilla;

        vertices       = new HashSet <Vector3> ();
        array_vertices = mapa.getVertices();

        foreach (Vector3 vertice in array_vertices)
        {
            vertices.Add(vertice);
        }

        vertices.Add(vector_meta);


        meta_encontrada = false;

        nodo_final                = null;
        nodo_actual               = null;
        nodo_inicio               = new Nodo();
        nodo_inicio.vector        = vector_inicio;
        nodo_inicio.vector_hybrid = vector_inicio;
        nodo_inicio.angulo_hybrid = v_angulo_coche;
        nodo_inicio.padre         = null;
        nodo_inicio.coste         = 0;

        abiertos.add(nodo_inicio);



        mapa.setRadio(0.5f);          //

        array_mapa_obstaculos = new int[ancho + 1, largo + 1, 1];

        tiempo_inicio = Time.realtimeSinceStartup;
        crearMapaObstaculos();
        tiempo_final = Time.realtimeSinceStartup;

        Debug.Log("Mapa de obstaculos creado en: " + (tiempo_final - tiempo_inicio) + " segs.");


        tiempo_inicio         = Time.realtimeSinceStartup;
        array_mapa_distancias = crearMapaDistancias();
        tiempo_final          = Time.realtimeSinceStartup;

        Debug.Log("Mapa de Distancias creado en: " + (tiempo_final - tiempo_inicio) + " segs.");


        tiempo_inicio = Time.realtimeSinceStartup;
        array_heuristica_obstaculos = crearMapaHeuristicaObstaculos();
        tiempo_final = Time.realtimeSinceStartup;

        Debug.Log("Mapa de heuristica de obstaculos creado en: " + (tiempo_final - tiempo_inicio) + " segs.");

        radio_giro_rad = ((Constantes.distancia / Constantes.coche_largo) * Mathf.Tan(Mathf.Deg2Rad * Constantes.coche_max_angulo));
        radio_giro     = Mathf.Rad2Deg * radio_giro_rad;

        Debug.Log("Radio giro rad: " + radio_giro_rad);
        Debug.Log("Radio giro: " + radio_giro);
    }