segunda-feira, 6 de dezembro de 2010

Teste de passagem Processing

Este programa utiliza-se do esquema processing de estrela dada em sala de aula para conjuga-lo com formularios HTML e passagem de parametros para dentro do applet Processing. A principio tive diversas falha para fazer com que os parametros conversassem com o processing. Mas durante aula demonstrativa de projetos o aluno jose levantou a queixa de similar problemas que foi resolvido utilizando-se o metodo de passagem de informação de dados por meio de GET no form HTML ao invés de POST. Utilizei-me então da dica e com algumas modificações fiz o applet conversar com o formulário HTML. Aqui vai o link da pagina

Programa form_estrela.php

<html>
<head><title>Teste de passagem Processing</title></head>
<body>
<hr>
<h1>TESTE DE INTEGRACAO</H1>

<form action="form_estrela.php" method="GET">
Escolha o numero de pontas para a estrela.
<select name="pontas" size="2">

     <?php 
        for($i=1;$i<=20;$i++){
          echo ("");
        }
     ?>
</select>

<br>
Escolha a cor de fundo na qual a estrela aparece.
<input type="radio" name="fundo" value="237,159,176">Rosa
<input type="radio" name="fundo" value="255,204,0">Amarelo
<input type="radio" name="fundo" value="174,221,60">Verde
<input type="radio" name="fundo" value="255,255,255">Branco
<input type="radio" name="fundo" value="116,186,221">Azul
<input type="submit" value="Ver"  />
<input type="reset" value="Limpar" />
</form> 


<?php
    if(Empty($_GET["pontas"])) {$pontas="5";}
    else {$pontas=$_GET["pontas"];$fundo=$_GET["fundo"];}
      
      echo ("<applet code='Estrela_HTML' archive='Estrela_HTML.jar' width=400 height=400>");
     
      echo ("<param name='pontas' VALUE='$pontas'>");
      echo ("<param name='fundo' VALUE='$fundo'>");     ?>
      </applet>
   
    
</body>
</html>

Programa Processing Estrela.pde

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Estrela_HTML extends PApplet {

float r, ang, pontas;
int rd,gr,bl;


public void setup()
{
// Passagem dos Paramentros advindos do HTML.
  String[] fundoStr = splitTokens(param("fundo"),",");  // cor de fundo da tela.
  String pontasStr = param("pontas");  // numero de pontas da estrela.
  pontas = float(pontasStr);
  rd =int(fundoStr[0]);
  gr =int(fundoStr[1]);
  bl =int(fundoStr[2]);
  
  
  size(400, 450); // define o tamnho da tela
  background(rd,gr,bl); // define a cor de fundo como branco
  r = min(width,height) / 2 * 0.9f;
  ang = 0;
  setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
}

public void draw()
{
  background(rd,gr,bl);
    setLayout(new FlowLayout());
  star(r, pontas, 3, ang);
  ang += 0.01f;
}


public void star(float raio, float lado, float divisor, float angulo)
{
  float next, k, i,inc,y0,x0,y1,x1,pi=3.141596f;
  float pi2 = 2*pi;
  inc = pi2/lado;
  k = divisor;
  next = inc * k;
  for(i=angulo;i<=pi2+angulo;i+=inc)
  {
  x0 = sin(i)*raio;
  y0 = -cos(i)*raio;
  x1 = sin(i+next)*raio;
  y1 = -cos(i+next)*raio;
  line(width/2+round(x0),height/2+round(y0),width/2+round(x1),height/2+round(y1));
  }
}
}