Desenhar um quadrado dentro de outro

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]

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.

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

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

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

teria como postar um exemplo basico?

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

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.

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.

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?

Obrigado pelas ajudas…vão ser bem uteis

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

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

o drawrect, resolve consegue usar isto?

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.

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

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

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.

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

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

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…

É 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?