#!/usr/bin/perl
#Make IIT logo on any scale

use strict;
use Math::Trig;

my $color="red";
my $size=1000;
my $ny=3;
my $nz=3;

my $s=sqrt(3);

#Scale and round
sub r {
  my $x=shift;
  return int($x*$size+.5);
}

sub intx {
  my $ty=shift;
  my $tz=shift;

  $ty=tan($ty*pi/(12*$ny));
  $tz=tan($tz*pi/(12*$nz));

  my $x=.5+.5*$s*$ty-$ty*(.5+.5*$s*$ty)*(.25*$s-.75*$tz)/((.75+.25*$s*$tz)+$ty*(.25*$s-.75*$tz));

  return r($x);
}

sub inty {
  my $ty=shift;
  my $tz=shift;

  $ty=tan($ty*pi/(12*$ny));
  $tz=tan($tz*pi/(12*$nz));

  my $y=(.5+.5*$s*$ty)*(.25*$s-.75*$tz)/((.75+.25*$s*$tz)+$ty*(.25*$s-.75*$tz));

  return r($y);
}

sub xy {
  my $x=shift;
  my $y=shift;
  print "  ".intx($x,$y).",".inty($x,$y)."\n";
}


print "<?xml version=\"1.0\" standalone=\"no\"?>\n";
print "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n";
print "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
print "<svg viewBox=\"0 0 ".r(1)." ".r(.5*sqrt(3))."\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n";
print "  <desc>IIT logo</desc>\n\n";


#Left-side triangle

print "<polygon fill=\"".$color."\" points=\"\n";
xy(0,$nz*-2);
xy(0,0);
xy($ny*-2,0);
print "  \" />\n\n";

#n upper triangles (z)

for(my $i=0;$i<$nz*2;$i+=2)
{
  print "<polygon fill=\"".$color."\" points=\"\n";
  xy($ny*-2,0);
  xy(0,1+$i);
  xy(0,2+$i);
  print "  \" />\n\n";
}

#n right-side triangles (y)

for(my $i=0;$i<$ny*2;$i+=2)
{
  print "<polygon fill=\"".$color."\" points=\"\n";
  xy(0,$nz*-2);
  xy(1+$i,0);
  xy(2+$i,0);
  print "  \" />\n\n";
}

#n*n squares

for(my $i=0;$i<$ny*2;$i+=2)
{
  for(my $j=0;$j<$nz*2;$j+=2)
  {
    print "<polygon fill=\"".$color."\" points=\"\n";
    xy(1+$i,1+$j);
    xy(1+$i,2+$j);
    xy(2+$i,2+$j);
    xy(2+$i,1+$j);
    print "  \" />\n\n";
} }


#Done!

print "</svg>\n";
