use Imager;

sub tree {
    my ($img, $x1, $y1, $x2, $y2, $depth) = @_;

    return () if $depth <= 0;

    my $dx = ($x2 - $x1);
    my $dy = ($y1 - $y2);

    my $x3 = ($x2 - $dy);
    my $y3 = ($y2 - $dx);
    my $x4 = ($x1 - $dy);
    my $y4 = ($y1 - $dx);
    my $x5 = ($x4 + 0.5 * ($dx - $dy));
    my $y5 = ($y4 - 0.5 * ($dx + $dy));

    
    $img->polygon(
        points => [
            [$x1, $y1],
            [$x2, $y2],
            [$x3, $y3],
            [$x4, $y4],
        ],
        color => [0, 255 / $depth, 0],
    );

    
    $img->polygon(
        points => [
            [$x3, $y3],
            [$x4, $y4],
            [$x5, $y5],
        ],
        color => [0, 255 / $depth, 0],
    );

    tree($img, $x4, $y4, $x5, $y5, $depth - 1);
    tree($img, $x5, $y5, $x3, $y3, $depth - 1);
}

my ($width, $height) = (1920, 1080);
my $img = Imager->new(xsize => $width, ysize => $height);
$img->box(filled => 1, color => 'white');
tree($img, $width/2.3, $height, $width/1.8, $height, 10);
$img->write(file => 'pythagoras_tree.png');