Imprimir pontos com valores float, no fillOval

15 respostas
R

fiz um programa para mostrar a reta da equacao de primeiro grau... mas quando crio os pontos... so posso usar valores int...

em drawOval ou fillOval... e queria algo mais preciso como, float... o que posso fazer...

segue o gráfico do programa...
for (x = 0; x < 10; x = x + 1) {
                y = (jresultado - x) / j2;
                int x2 = (int) x;
                int y2 = (int) y;
                posicaoX = 135 + (x2 * 10);
                posicaoY = 135 + (y2 * (-10));
//pontos, tentar so imprimir se for mesmo inteiro...
               // if ((x2 != posicaoX) && (y2 != posicaoY)) {
                    g.fillOval(posicaoX, posicaoY, 4,4);
                //}

estou com fill oval. mas nao é preciso... preciso de precisão. valeu...

15 Respostas

R

e ai vinny, ajuda nisso?

R

nenhum metodo ou maneira de desenhar com pontos float, mais precisos?

ViniGodoy

Existe sim. Ao invés de usar o fillOval, desenhe usando um Ellipse2D:

Ou seja, no lugar disso:

Use isso:

Ellipse2D circulo = new Ellipse2D.Double(posicaoX, posicaoY, 4, 4); g.fill(circulo);

Para mais informações, dá uma lida nos tutoriais de Java2D lá do Ponto V!

R

certo vou olhar. tentei rodar uns jogar seus que nao funcionou, nao sei se foi só comigo…

valeu, estava tentando pegar o valor em double ou float e passar para a coordenada que deve ser em int… daria certo mas nao estou conseguindo fazer a conversão… vamos tentar aplicar o valor float direto…

estou na resposta rapida, por isso sem o codigo…

segue o código que estou trabalhando…

for (double r=0; r<10;r=r+0.1   )   {

double variavel=r;

System.out.println("variavel: "+variavel);

// if (xLinha==r)   {     xLinha2=  (    r <em>10);}

//no xis linha, o  y sempre é zero e aqui é 135…

g.fillOval(133+(xLinha2),135, 4,4);

g.fillOval(133+(xDuasLinhas2</em>10),135, 4,4);

tem como fazer um for, em que 0.1 = a 0.1*10 por exemplo que é 1 e assim por diante… 0.2 10 =2 0.310 =3 … isso ja serviria…

mas as vezes vem numeros 0.123 e aí não dá mais certo fazer *10… o que me diz, tem como restringir as casas da variavel, usar só uma após o ponto? neste caso teria que fazer uma média, se fosse 1.23 ele baixa o valor para 1.2 e 1.55 baixa para 1.5 por diante. entende?

R

0.125 = a 0.1 e 1.34 = 1.3 por exemplo é o que preciso para continuar usando os ints… no drawOval…

R

o g.fill deu problema… nao acha nao…

quero fazer é uma parábola par auma função de 2 grau…
tenho um ponto vertice e dois pontos em que a parabola vai passar no eixo x… alguma dica boa de que função, metodo, api, usar… aí… to achando que a ellipse 2d ainda nao é a mais adequada… seria a cubic curves… [url]? vou olhar la

ViniGodoy

Você está usando o Graphics2D?

Posta o resto do seu método.

R

tinha que ser g2…

g2.fill(circulo); ok.

R

segue aí meu projeto de equacao… coments… qual parabola pode passar exatamente nos pontos, criados? vou ver…

ViniGodoy
O normal é trabalhar assim:
public void paintComponent(Graphics g) {
   //1. Crie uma cópia e converta para Graphics2D
   Graphics2D g2d = (Graphics2D)g.create();

   //2. Desenhe aqui usando g2d

   //3. Limpe os recursos ocupados pela cópia
  g2d.dispose();
}
R

usei isto:

QuadCurve2D q = new QuadCurve2D.Double();
// Define suas coordenadas e a desenha
q.setCurve(135+(xLinha*10),135      , 133+(xVertice*10)  , 133-(yVertice*10),       135+(xDuasLinhas*10),135    );
g2.draw(q);

isto:

133+(xVertice*10) , 133-(yVertice*10)

é o vértice, mas ele nao alcança exatamente, este ponto, porque será? segue o jar…

ViniGodoy

Por que você não traça a parabola ponto-a-ponto?
É melhor que tentar usar as curvas quadricas ou bicubicas.

R

é acho que é o jeito, alguma dica para a trajetória… vou ver o que faço aqui… estou preocupado só com o formato da curva… mas vou pensar…

R

creio que é só substituir os valores nas variaveis. depois posto aqui. valeu.

R
ta sendo um pouco dificil, vou pensar... mas nao sei porque a curva nao funciona, devia enxergar o vertice como estou propondo nao?
// Cria uma nova curva
QuadCurve2D q = new QuadCurve2D.Double(); // Define suas coordenadas e a desenha
q.setCurve(135+(xLinha*10),    135      , 135+(xVertice*10)  , 135-(yVertice*10),       135+(xDuasLinhas*10),135    );
g2.draw(q);



        g2.setColor(Color.blue);
        double xv= 135+(xVertice*10);

        for( double laco=0;  laco<40; laco=laco+5 ){
        Ellipse2D vertice3=new Ellipse2D.Double(135+(xDuasLinhas*10)+laco,laco+  135-(yVertice*10), 4, 4)  ;
        g2.fill(vertice3);
        System.out.println("valor de laco"+laco);
            }

segue o jar atual...

Criado 5 de abril de 2011
Ultima resposta 7 de abr. de 2011
Respostas 15
Participantes 2