Duvida num metodo generico para Calculo de vertice de triangulo, quadrado, pentagono, hexagono
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
Clique aqui para fazer login e interagir na Comunidade :)