terça-feira, 23 de maio de 2017

Xadrez pra 2, 3, 4 e 5




void setup()
{
  size(500, 500);
}
void draw()
{
  background(127);
  translate(width/4, height/4);
  Board(2, 50);
  resetMatrix();
  translate(width/4*3, height/4);
  Board(3, 50);
  resetMatrix();
  translate(width/4*3, height/4*3);
  Board(5, 50);
  resetMatrix();
  translate(width/4, height/4*3);
  Board(4, 50);
}

void Board(int p, float s) {
  for (int i = 0; i < p*2; i++) {
    rotate(PI/p);
    Quarter(s, PI/p, (i%2==0));
  }
}

void Quarter(float r, float d, boolean b)
{
  pushMatrix();
  float a = HALF_PI - d;
  for (int i = 0; i<4; i++) {
    for (int j = 0; j<4; j++) {
      float y = j*r/4;
      float x = 0;
      if ((i+j)%2 == 0)
        fill(b ? 0 : 255);
      else
        fill(b ? 255 : 0);
      beginShape();
      vertex(x, y);
      vertex(x+r/4*cos(a), y+r/4*sin(a));
      vertex(x+r/4*cos(a), y+r/4+r/4*sin(a));
      vertex(x, y+r/4);
      endShape(CLOSE);
      if (j==3) {
        translate(r/4*cos(a), r/4*sin(a));
      }
    }
  }
  popMatrix();
}

Nenhum comentário:

Postar um comentário

Pode falar, eu não mordo... Pelo menos não através da internet