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}
Versão mais fácil de ler:
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}
A linha 1 define uma função n
que nega a primeira coordenada de um par ordenado. A linha 2 define uma função g
que produz um triângulo equilátero (aproximadamente) centrado no ponto c
e apontando para baixo ou para cima, dependendo de s
ser 1
ou -1
. Linha 3 define p
-se um modelo de paralelogramo que consiste de uma cor e dois triângulos, e as linhas 4-6 definir a
, b
e c
para ser os três tipos específicos diferentes de paralelogramos que aparecem nos cubos.
A linha 8 define uma função {a@#, b@#, c@#}&
que desenha um cubo inteiro centrado no ponto #
; as linhas 9 e 10 aplicam isso aos nove pontos necessários para formar o triângulo maior. Isso produz nove cubos, começando no canto superior direito e indo no sentido anti-horário, onde os últimos cobrem partes dos anteriores. Finalmente, a linha 11 redesenha quatro paralelogramos (no canto superior direito da figura) para que eles cubram os cubos posteriores como deveriam. A saída está abaixo: