$(document).ready(function init() {
  var canvas = document.getElementById('easel'),
  stage = new createjs.Stage(canvas),
  initial_triangle_size = 400,
  initial_triangle_x = 250,
  initial_triangle_y = 250,
  vertical_ratio = 0.866,
  t1, t2, t3, t4, t5;
  
  function createTriangle(size, x, y) {
    var shape = new createjs.Shape(),
    g = shape.graphics,
    horizontal_offset = size / 2,
    vertical_offset = size * vertical_ratio / 3;
      
    g.setStrokeStyle(1);
    g.beginStroke("black");
    
    g.moveTo(0, -2 * vertical_offset);
    g.lineTo(-1 * horizontal_offset, vertical_offset);
    g.lineTo(horizontal_offset, vertical_offset);
    g.lineTo(0, -2 * vertical_offset);
    
    shape.x = x;
    shape.y = y;
  
    return shape;
  }
  
  // t1 setup
  // static triangle that never changes
  stage.addChild(createTriangle(initial_triangle_size, initial_triangle_x, initial_triangle_y));
  t1 = []
  t1.push(createTriangle(initial_triangle_size, initial_triangle_x, initial_triangle_y));

  // t2 setup
  t2 = [];
  var t2_size = initial_triangle_size / 3;
  var t2_height = initial_triangle_size * vertical_ratio / 3;
  // top
  t2.push(createTriangle(t2_size, initial_triangle_x, initial_triangle_size * vertical_ratio - initial_triangle_y));
  // bottom-left
  t2.push(createTriangle(t2_size, initial_triangle_x - t2_size, initial_triangle_y + (t2_height * 2 / 3)));
  // bottom-right
  t2.push(createTriangle(t2_size, initial_triangle_x + t2_size, initial_triangle_y + (t2_height * 2 / 3)));

  function remove_from_stage(child) {
    stage.removeChild(child);
  }

  function t1_rotate() {
    $.each(t1, function(k, v) { stage.addChild(v); });
    createjs.Tween.get(t1[0]).to({rotation: 60}, 500)
      .wait(500)
      .call(t2_rotate);
  }
  function t2_rotate() {
    $.each(t2, function(k, v) { stage.addChild(v); });
    $.each(t2, function(k, v) {
      createjs.Tween.get(v)
        .to({rotation: 60}, 500);
    });
    createjs.Tween.get(t2[0]).wait(1000).call(t2_reset);
  }
  function t2_reset() {
    $.each(t2, function(k, v) {
      createjs.Tween.get(v)
        .to({rotation: 0}, 500)
        .call(remove_from_stage, [v]);
    });
    createjs.Tween.get(t2[0]).wait(1000).call(t1_reset);
  }
  function t1_reset() {
    createjs.Tween.get(t1[0])
      .to({rotation: 0}, 500)
      .wait(1000)
      .call(t1_rotate);
  }
  
  
  // start the party
  t1_rotate();
  createjs.Ticker.setFPS(60);
  createjs.Ticker.addEventListener("tick", stage);

})



@@ -290,20 +290,33 @@
 ze, x, y
+, upside_down
 ) %7B%0A
-
     var 
@@ -452,22 +452,51 @@
 io / 3;%0A
+%0A
     
-  
+shape.x = x;%0A    shape.y = y;%0A
 %0A    g.s
@@ -542,24 +542,49 @@
 ack%22);%0A    %0A
+    if (upside_down) %7B%0A  
     g.moveTo
@@ -583,25 +583,24 @@
 g.moveTo(0, 
--
 2 * vertical
@@ -605,32 +605,34 @@
 al_offset);%0A    
+ 
+ 
 g.lineTo(-1 * ho
@@ -639,32 +639,37 @@
 rizontal_offset,
+ -1 *
  vertical_offset
@@ -663,32 +663,34 @@
 rtical_offset);%0A
+  
     g.lineTo(hor
@@ -704,16 +704,21 @@
 _offset,
+ -1 *
  vertica
@@ -724,24 +724,26 @@
 al_offset);%0A
+  
     g.lineTo
@@ -746,17 +746,16 @@
 neTo(0, 
--
 2 * vert
@@ -776,45 +776,217 @@
     
+%7D
 %0A    
-shape.x = x;%0A    shape.y = y
+else %7B%0A      g.moveTo(0, -2 * vertical_offset);%0A      g.lineTo(-1 * horizontal_offset, vertical_offset);%0A      g.lineTo(horizontal_offset, vertical_offset);%0A      g.lineTo(0, -2 * vertical_offset)
 ;%0A  
+  %7D
 %0A   
@@ -1658,16 +1658,16 @@
 m-right%0A
-
   t2.pus
@@ -1765,16 +1765,414 @@
  / 3)));
+%0A  // upside-down triangles%0A  // top-left%0A  t2.push(createTriangle(t2_size, initial_triangle_x - t2_size, initial_triangle_y - (t2_height * 2 / 3), true));%0A  // top-right%0A  t2.push(createTriangle(t2_size, initial_triangle_x + t2_size, initial_triangle_y - (t2_height * 2 / 3), true));%0A  // bottom%0A  t2.push(createTriangle(t2_size, initial_triangle_x, t2_height * 4 / 3 + initial_triangle_y, true));
 %0A%0A  func

Modify createTriangle to draw upside down triangles, then add t2 upside down triangles.