Circulo ponto a ponto

1 resposta
T

Bom pessoal, eu tenho uma tarefa para uma materia da faculdade, que é para testar os conceitos de aula, o primeiro, é que eu consiga desenhar um circulo ponto a ponto, usando o drawLine. usando tres metodos:

1º - y = +- raiz de r² - x²;

2º - x = cosTETA
y = senTETA
Nao lembro direito a formula, estou postando correndo antes que acabe minha aula...

3º - por um algoritmo.

o primeiro eu comecei a desenvolver assim:

package cg;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;

public class Desenha extends JFrame {

    Desenha(){
        super("Bolota");
        addWindowListener(
                new WindowAdapter(){
            public void
        WindowClosing(WindowEvent e){
                System.exit(0);
            }
        });

        setSize(300,300);
        add("Center", new MyCanvas());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        show();
    }

    public static void main(String[] args){
        new Desenha();
    }
}

class MyCanvas extends Canvas{
    @Override
    public void paint(Graphics g){
        Dimension d = getSize();
        g.setColor(Color.red);
        int x1, x2, y1, y2, r;
        x1 = 0;
        r = 50;

        while(x1 != 50){
          y2 = (int)Math.sqrt(r * r - x1 * x1);
          g.drawLine(x1, y2, x1, y2);
          x1++;
        }
    }
}

Mas soh consegui desenhas 1/4 do circulo, o que devo fazer para desenhar o resto ? como estou indo ?

[]'s

1 Resposta

V

Você está indo bem no primeiro método.

Uma dica, para o segundo método.

Para um ângulo X qualquer, os valores x = cos(X) e y = sen(X) darão um ponto sobre a circunferência trigonométrica (de raio 1). Para que você altere o raio do círculo, basta multiplicar esse x e y obtidos pelo raio desejado.

Agora, é só fazer um for que varie de 0 até 360, e traçar retas nos pontos obtidos com os cálculos acima. Só lembre que as funções Math.sin e Math.cos usam como angulos valores em radianos (graças a Deus existe a função Math.toRadians).

Outra coisa. Canvas é um componente da AWT, não deveria ser misturado com componentes do Swing. No lugar, faça um extends em JComponent e sobrescreva o método paintComponent.

Criado 17 de agosto de 2010
Ultima resposta 18 de ago. de 2010
Respostas 1
Participantes 2