Mathematica, 237 bytes
n={-1,1}#&;c_~g~s_:=Polygon[c+s#&/@{k={12,9},m=n@k,t={0,-12}}];p={#,#2~g~1,#3~g~-1}&;a=p[Cyan,#-k,#+m]&;b=p[Blue,#-t,#+k]&;c=p[Red,#-m,#+t]&;Graphics@{{a@#,b@#,c@#}&/@{j=4k,s=4{4,9},n@s,4m,r={-32,8},q=-4{4,5},4t,n@q,n@r},a@j,b@s,c@j,c@s}
Versión más fácil de leer:
1 n = {-1, 1} # &;
2 c_~g~s_ := Polygon[c + s # & /@ {k = {12, 9}, m = n@k, t = {0, -12}}];
3 p = {#, #2~g~1, #3~g~-1} &;
4 a = p[Cyan, # - k, # + m] &;
5 b = p[Blue, # - t, # + k] &;
6 c = p[Red, # - m, # + t] &;
7 Graphics@{
8 {a@#, b@#, c@#} & /@
9 {j = 4 k, s = 4{4, 9}, n@s, 4 m, r = {-32, 8},
10 q = -4{4, 5}, 4 t, n@q, n@r},
11 a@j, b@s, c@j, c@s}
La línea 1 define una función n
que niega la primera coordenada de un par ordenado. Línea 2 define una función g
que produce un (unos) triángulo equilátero centrado en el punto c
, y apuntando hacia arriba o abajo dependiendo de si s
es 1
o -1
. Línea 3 define p
para ser una plantilla de paralelogramo que consiste en un color y dos triángulos, y las líneas 4-6 definir a
, b
y c
ser los tres tipos específicos diferentes de paralelogramos que aparecen en los cubos.
La línea 8 define una función {a@#, b@#, c@#}&
que dibuja un cubo completo centrado en el punto #
; las líneas 9 y 10 aplican eso a los nueve puntos necesarios para hacer el triángulo más grande. Esto produce nueve cubos, que comienzan en la esquina superior derecha y van en sentido antihorario, donde los posteriores cubren partes de los primeros. Finalmente, la línea 11 vuelve a dibujar cuatro paralelogramos (en la esquina superior derecha de la imagen) para que terminen cubriendo los cubos posteriores como se supone que deben hacerlo. La salida está abajo: