@Override
    public void mouseChanged(PApplet a, PVector mousePosReal) {
        Viewer2D viewer2D = (Viewer2D) a;
        float escala = viewer2D.getEscala();
        float angulo = viewer2D.getAngulo();
        a.pushMatrix();
        a.pushStyle();
        viewer2D.transform();

        float larguraQuadradoGrid = propriedades.getLarguraQuadrado();
        float alturaQuadradoGrid = propriedades.getAlturaQuadrado();

        //
        // Tenta encontrar um quadrado que esteja em baixo do mouse, e caso exista mostra as coordenadas.
        //
        boolean found = false;
        for (int i = 0; i < grid.getWidth(); i++) {
            for (int j = 0; j < grid.getHeight(); j++) {

                float transX = (larguraQuadradoGrid * i);
                float transY = (alturaQuadradoGrid * j);
                //Caso encontre um quadrado que esteja em baixo do mouse...
                if (mousePosReal.x > transX
                        && mousePosReal.x < transX + larguraQuadradoGrid
                        && mousePosReal.y > transY
                        && mousePosReal.y < transY + alturaQuadradoGrid) {
                    //mostra as coordenadas na tela (o desenho do texto é feito efetivamente pela funcao draw2D() ).
                    propriedades.setCoordenadasEnabled(true);
                    setQuadradoEmbaixoDoMouse(new Ponto(i, j));
                    found = true;
                    //Redesenha a interface grafica
                    a.redraw();
                    break;
                }
            }
            if (found) break;
        }

        if (!found) {
            propriedades.setCoordenadasEnabled(false);
            setQuadradoEmbaixoDoMouse(null);
        }

        a.popStyle();
        a.popMatrix();

    }