//Each triangle is divided by 3 many times //makes: 1 bat wing paper 0 antialias 1 command draw_sub_tri x1 y1 c1 x2 y2 c2 x3 y3 c3 level maxlevel { set mx ((x1+x2+x3)/3) set my ((y1+y2+y3)/3) set mc ((c1+c2+c3)/3) smaller? 0 level { draw_sub_tri x1 y1 c1 x2 y2 c2 mx my mc (level-1) maxlevel draw_sub_tri x2 y2 c2 x3 y3 c3 mx my mc (level-1) maxlevel draw_sub_tri x3 y3 c3 x1 y1 c1 mx my mc (level-1) maxlevel } pen (level*100/maxlevel) line mx my x1 y1 line mx my x2 y2 line mx my x3 y3 } command draw_tri x1 y1 z1 x2 y2 z2 x3 y3 z3 levels { draw_sub_tri x1 y1 z1 x2 y2 z2 x3 y3 z3 levels levels line x1 y1 x2 y2 line x2 y2 x3 y3 line x3 y3 x1 y1 } draw_tri 0 0 0 50 100 0 100 0 0 6 draw_tri 0 0 0 0 100 0 50 100 0 6 draw_tri 100 0 0 50 100 0 100 100 0 6