Desenhar um quadrado dentro de outro

22 respostas
G

Seguinte…preciso desenvolver um codigozinho em java para uma materia da faculdade…porem nunca trabalhei muito com isso

gostaria de contar com a ajuda de vcs…anexei uma imagem do que o codigo deve reproduzir

no caso quadrados dentro de quadrados…até ficar um quadrado minusculo…a imagem explica melhor…aguardo um retorno

[URL=http://img705.imageshack.us/i/quadradodentroquadrado.jpg/][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]

22 Respostas

G

Veja se ajuda:

Cada quadrado interno é 70.5% menor que o seu quadrado exterior.
Basta adicionar um novo quadrado, diminuir sua escala em 70.5% e rotacioná-lo -45º

Entendeu?

Abs.

E

Onde 70,5% é mais ou menos a mesma coisa que 1 / Math.sqrt (2.0)
( ou seja, 0.70710678118654752440084436210485… ).

M

Sobreescrevendo o método paintComponent do JPanel é facil fazer isso usando os recursos do Graphics2D.

G

hummm…blzz…acho que é por onde eu pensei…

pensei como vcs falaram, mas na real eu achei que tivesse que calcular aresta e tudo mais…

entao a ideia é pegar a dimensao do quadrado anterior, diminuir sua dimensao em 70,5% e rotacionar 90º ?

valeu

G

teria como postar um exemplo basico?

E

Claro que tem de calcular aresta. O que é “70,5%” do valor anterior?

M
public class Exemplo extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.fillRectangle(10,10,100,100);
g2d.dispose();
}
}

Adicione isso em um JFrame que voce vai ver um quadrado preenchido.
Se voce quiser desenhar só a linha use drawX invés de fillX.

O resto é com voce, use a dica que te falaram sobre a arestas que o entanglement falou.

T

Cara, é muito simples.
Estude um pouco de Java2D, como desenhar em canvas etc e tal…

Daí é criar um canvas e desenhar o primeiro polígono, dadas as coordenadas originais (informando os pontos).
Daí em diante você chama o mesmo método recursivamente (quantas vezes quiser, não esqueça do ponto de parada) recalculando as coordenadas na chamada seguinte de acordo com as coordenadas originais.
Simples:

Primeiro quadrado terá os pontos
a: x0,y0 b: x10,y0 c: x10,y10 d:x0,y10
Daí desenho o polígono nessa coordenada e chamo o mesmo método com o cálculo:
a.x = (a.x + b.x ) / 2
a.y = (a.y + b.y ) / 2

b.x = (b.x + c.x ) / 2
b.y = (b.y + c.y) / 2

c.x = (c.x + d.x ) / 2
c.y = (c.y + d.y) / 2

d.x = (d.x + a.x ) / 2
d.y = (d.y + a.y) / 2

Note que para calcular o par de coordenadas será sempre o ponto médio.

Ainda tem um bom caminho pela frente, estude Java2D, canvas, etc…

Abraços.

G

Eu ainda acho muito mais OOP vc criar uma classe quadrado e rotacionar e alterar a escala.

Depende também do que vc precisa aprender.
Qual curso vc está fazendo?

G

Obrigado pelas ajudas…vão ser bem uteis

meu curso eh ciencia da computação…o componente eh Computação Gráfica

R

resta saber se a geração tem que ser automatica, ou pode fazer um por um…

o drawrect, resolve consegue usar isto?

T

Se você souber como rotacionar coordenadas, basta apenas você saber como desenhar um quadrado.

Se não souber rotacionar coordenadas, pode usar drawPolygon para os quadrados inclinados.

G

bah, to apanhando um pouco aqui…faço o quadrado unsando o drawRect porem nao to conseguindo pensar na logica certa para seguir…

G

alguma alma caridosa poderia fazer um exemplo q funcione e disponibilizar?? pode ser com uns 2 ou 3 quadrados e o resto eu implemento…abraço

V

Dê uma lida nesses artigos do Ponto V:
Uma visão rápida sobre o Java 2D
Pintando no Java 2D
O fantasma do pacman

Muito provavelmente depois deles você vai saber exatamente como resolver seu problema. Os artigos incluem exemplos funcionais.

G

up…sera que alguem pode me ajudar colocando um exemplo de como ficaria um quadrado dentro do outro??

li e li, porém não consegui entender, qual seria a função exata para desenvolver isso…desenhar o quadrado eu fiz, problema está que funções uso para pegar dimensão do mesmo e gerar um novo, e qual a função para transformar a escala :frowning: :frowning:

se alguem puder postar…manual mesmo…nao precisa ter nda automático

E

Tio, você pelo menos sabe desenhar algo que não seja quadrado, usando drawPolygon?

G

não…e nem estou usando o drawPolygon

e estou emcima do quadrado em função do meu exercicio…q precisa gerar quadrado dentro de quadrados…

E

É que quero que você faça pelo método mais bobo (sem fazer translações ou rotações de coordenadas, que acho que isso seu professor ainda não ensinou).

Você sabe desenhar o primeiro quadrado dentro do outro (aquele que se parece com um losango, lembre da bandeira do Brasil)?

Ele é um polígono de 4 lados, mas não é com drawRect que você vai desenhá-lo.

Use drawPolygon.

Você sabe pelo menos fazer algumas continhas, para saber quais são as coordenadas dos pontos?

E

Dica: pegue um papel milimetrado, se estiver com dificuldades de fazer contas.

G

entanglement:
É que quero que você faça pelo método mais bobo (sem fazer translações ou rotações de coordenadas, que acho que isso seu professor ainda não ensinou).

Você sabe desenhar o primeiro quadrado dentro do outro (aquele que se parece com um losango, lembre da bandeira do Brasil)?

Ele é um polígono de 4 lados, mas não é com drawRect que você vai desenhá-lo.

Use drawPolygon.

Você sabe pelo menos fazer algumas continhas, para saber quais são as coordenadas dos pontos?

não sei fazer essas continhas…hehe vou ter q ver aqui…

E

Depois de você pegar o papel e vir que é mais fácil que você imagina, vai ficar espantado de como é simples. Não tem nem de calcular senos, cosenos, raízes de dois ou coisas parecidas. Incrível mas é verdade: pegue o papel e veja que é mais simples que você imagina.

Pegue um papel milimetrado ou quadriculado, e veja as coordenadas.

Criado 6 de agosto de 2010
Ultima resposta 9 de ago. de 2010
Respostas 22
Participantes 8