Cálculo de coordenadas em java

Nesse artigo o Agnaldo mostra como se calculam as novas coordenadas de uma figura (quadrado) ao ser posicionado no plano segundo um ângulo qualquer entre 0 e 90 graus.

Cálculo de coordenadas em java

Solução: criei um protótipo chamado Figura.java que demonstra o cálculo:

public class Figura {
//
    public static void main(String[] args) {
        Quadrado q = new Quadrado(2, 0); //posicao diagonal
        System.out.printf(”As coordenadas da figura sao \n%s\n%s\n%s\n%s\n\n\n”, q.se, q.sd, q.id, q.ie);
//
        q = new Quadrado(2, 45); //posicao horizontal
        System.out.printf(”As coordenadas da figura sao \n%s\n%s\n%s\n%s\n\n\n”, q.se, q.sd, q.id, q.ie);
//
        q = new Quadrado(2, 30); //inclinado
        System.out.printf(”As coordenadas da figura sao \n%s\n%s\n%s\n%s\n\n\n”, q.se, q.sd, q.id, q.ie);
    }
}
//
class Quadrado {
    double lado;
    int angulo;
//
    Ponto se; //canto superior esquerdo
    Ponto sd; //canto superior direito
    Ponto id; //canto inferior direito
    Ponto ie; //canto inferior esquerdo
//
    Quadrado(double lado, int angulo) { //ângulo em graus da diagonal em relação ao eixo x!!!
        se = new Ponto(Math.cos(Math.toRadians(angulo + 90)) * Math.sqrt(2) * lado/2, Math.sin(Math.toRadians(angulo + 90)) * Math.sqrt(2) * lado/2);
        sd = new Ponto(Math.cos(Math.toRadians(angulo)) * Math.sqrt(2) * lado/2, Math.sin(Math.toRadians(angulo)) * Math.sqrt(2) * lado/2);
        id = new Ponto(Math.cos(Math.toRadians(angulo + 270)) * Math.sqrt(2) * lado/2, Math.sin(Math.toRadians(angulo + 270)) * Math.sqrt(2) * lado/2);
        ie = new Ponto(Math.cos(Math.toRadians(angulo + 180)) * Math.sqrt(2) * lado/2, Math.sin(Math.toRadians(angulo + 180)) * Math.sqrt(2) * lado/2);
    }
}
//
class Ponto {
    double x;
    double y;
//
    Ponto(double x, double y) {
        this.x = Math.round(x*100)/100.;
        this.y = Math.round(y*100)/100.;
    }
//
    public String toString() {
        return “(” + String.valueOf(x) + “, ” + String.valueOf(y) + “)”;
    }
}

Artigos relacionados