Fórum Duvida num metodo generico para Calculo de vertice de triangulo, quadrado, pentagono, hexagono #476790
20/04/2014
0
public Triangulo(double x, double y, double raio, double rotacao, int tamanho) {
super(x, y, raio, rotacao, tamanho, 3);
}
public Quadrado(double x, double y, double raio, double rotacao, int tamanho) {
super(x, y, raio, rotacao, tamanho, 4);
}
Por ser um polígono regular (tem todos os seus lados e ângulos internos iguais), podemos perceber que o ângulo de rotação a aplicar (Angulo Teta) para obter o próximo vértice é calculado pela divisão da circunferência (360° = 2.PI) em partes iguais (o número de lados do polígono – nlp): Angulo Teta = 360°/nlp (Angulo Teta = 2PI/nlp).
No caso do hexágono temos: nlp = 6, logo Angulo Teta = 360°/6=60°(Angulo Teta = 2.PI / 6 = PI/3);
e no pentágono será nlp = 5, logo Angulo Teta = 360° / 5 = 72° (Angulo Teta = 2.PI / 5).
//Aqui neste metodo, onde coloco o (int tamanho), sendo
// centro(0,0);
// mRaio=0
//mRotacao=0
//mNLados=conforme tipo de poligono regular
public List<Ponto> getVertices() {
ArrayList<Ponto> vertices = new ArrayList<>();
double increment = 360.0 / mNLados;
for (int i = 0; i < mNLados; ++i) {
vertices.add(new Ponto(Math.cos((mRotacao + increment * i) * Math.PI / 180) * mRaio + mCentro.getX(),
Math.sin((mRotacao + increment * i) * Math.PI / 180) * mRaio + mCentro.getY()));
}
return vertices;
}
Sandra Mirador
Curtir tópico
+ 0
Responder
Posts
20/04/2014
Sandra Mirador
Exemplo
int tamanho= 10; /*10 cm*/ Triangulo triangulo= new Triangulo(0,0,0,0, tamanho); Quadrado quadrado= new Quadrado(0, 0, 0, 0, tamanho); //De facto esse atributo tamanho, não faz nehum efeito no metodo getVertices() para //calculo de vertices dos poligonos regulares //Aqui chamo os metodos getVertices triangulo.getVertices (); quadrado.getVertices (); System.out.println(triangulo.toString()); System.out.println(quadrado.toString()); //--- TRIANGLE --- C->(0,00, 0,00)->(0,00, 0,00)->(0,00, 0,00); //--- QUADRADO--- C->(0,00, 0,00)->(0,00, 0,00)->(0,00, 0,00)->(0,00, 0,00);
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)