open window 640,512
clear window

draw_sub_tri(320,0,640,512,0,512,255)
end

sub draw_sub_tri(p1x,p1y,p2x,p2y,p3x,p3y,col)
 setrgb 1,col,col,col
 if (abs(p3x-p1x) <= 1) goto no_more
 fill triangle p1x,p1y to p2x,p2y to p3x,p3y
 draw_sub_tri(p1x,p1y,(p2x-p1x)*0.5+p1x,(p2y-p1y)*0.5+p1y,(p3x-p1x)*0.5+p1x,(p3y-p1y)*0.5+p1y,255-col)

 draw_sub_tri(p2x,p2y,(p2x-p1x)*0.5+p1x,(p2y-p1y)*0.5+p1y,(p3x-p2x)*0.5+p2x,(p3y-p2y)*0.5+p2y,255-col)

 draw_sub_tri(p3x,p3y,(p3x-p1x)*0.5+p1x,(p3y-p1y)*0.5+p1y,(p3x-p2x)*0.5+p2x,(p3y-p2y)*0.5+p2y,255-col)
label no_more
end sub
