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) + “)”;
}
}