sábado, 14 de maio de 2016

Projeto - Teste de Rorschach em Java

O Teste de Rorschach ficou famoso em duas ocasiões, primeira quando estreou o filme "Watchmen" e todos ficaram curiosos com o estranho personagem, a segunda quando foi aplicado a Suzane von Richthofen como forma de tentar entender sua personalidade.


É um teste simples e ao mesmo tempo muito complexo, consiste na apresentação de um cartão "manchado com tinta" (por esse motivo também é chamado de "Teste do Borrão de Tinta") e perguntar a pessoa o que ela está vendo. A partir das respostas (essa é a parte complexa) traçar a personalidade do entrevistado.

O que mais me diverte nesse teste, como programador, é ver que a imagem formada segue um padrão, a tinta é colocada em um lado do cartão e esse é dobrado ao ser aberto é que se forma o desenho. É como se metade do cartão fosse visto através de um espelho.

Então me perguntei se seria possível criar um programa para reproduzir os desenhos em Java? Um programa com o pacote Swing (parte gráfica da linguagem) usa o método paint(Graphics) para criar imagens (criei um RefCard que pode ser baixado aqui sobre esse assunto). Então é possível utilizá-lo para recriar o padrão desse desenho.

Primeiro detalhe é que a imagem deve possuir um tamanho fixo, pensando em uma imagem de 640 px por 335 px, temos que lembrar de alguns detalhes importantes:
  • Pensemos que o papel será dobrado para obter a imagem completa, sendo assim devemos pintar apenas metade da largura da área total (320 px) e reproduzir o mesmo desenho na outra metade em forma espelhada.
  • Deve ocorrer uma maior concentração de pontos da imagem do centro para as bordas.
  • Fica mais destacado o desenho se as cores são variações de preto e vermelho.
A lógica é simples, criar imagens ovais (bolinhas) com altura entre 5 px e 295 px (para não chegarmos ao topo), largura entre 1 px e 30 px e altura entre 1 px e 20 px. Para a posição a esquerda deve existir uma maior concentração de pontos no meio da figura, para isso vamos trabalhar com 5 áreas distintas, a primeira permitir que 150 bolinhas sejam geradas na área total, diminuir 50 px de margem esquerda e desenhar mais 150 bolinhas, e assim vai até chegar na última área de 50 px.

Para cada conjunto de 150 bolinha geradas serão 145 no padrão preto (isso é, com RGB variando entre [0,0,0] preto escuro e [109,109,109] cinza escuro) e outras 5 no padrão vermelho (isso é, com RGB variando entre [255,0,0] preto escuro e [255,109,109] cinza escuro).

O pulo do gato para formar a figura completa e duplicar cada uma das bolinhas geradas no seu correspondente a esquerda imitando um espelho. Imaginemos que uma bolinha foi gerada na posição a esquerda de 10 px (está bem perto do canto esquerdo) com largura de 10 px, ela deve parar no canto direito da imagem. Para isso vamos usar uma fórmula simples, [Tamanho Total] menos a [Posição a Esquerda] menos a [Largura].

Veja 4 imagens geradas pelo programa:





Adicionei dois detalhes ao programa que é um botão para mudar a imagem e outro para permitir salvá-la em arquivo formato PNG. Use esse programa para gerar suas imagens, mudar os padrões de geração aumentando ou diminuindo os valores e principalmente para melhorar seus conhecimentos na prática da linguagem Java.

Baixe o programa completo em: Rorschach

Obrigado e até a próxima
Fernando Anselmo

0 comentários:

Postar um comentário