Here's how you do that in Metapost. There's no built-in gradient shading option, but you can draw lots of thin triangles with varying colours.

prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
a = 20;
pair A, B, C;
A = origin;
B = 120 right rotated a;
C = 120 right rotated -a;
path t;
t = A--B--C--cycle;
s = 1/4;
for i=s step s until 2a:
filldraw point 0 of t
-- point 1+(i-s)/2a of t
-- point 1+(i)/2a of t
-- cycle withcolor ((3+i)/2a)[green,red];
endfor
dotlabel.lft("A", A);
dotlabel.urt("B", B);
dotlabel.lrt("C", C);
endfig;
end.
Note: the extra 3 in the shading arithmetic slightly favours red so that it looks even. Without this bias, it looked like there was more green than red to me.