Concavidad y convexidad

Maurits Cornelius Escher. 1955. Litografía

Representa una construcción que parece tener un eje de simetría axial situado en la línea vertical central pero reina la confusión: paredes que deberían mirarhacia la derecha, lo hacen hacia la izquierda y al revés. El suelo se transforma en techo y al contrario. Por si fuera poco, espacios que deberían estar dentro, se encuentran fuera. Si miramos la zona izquierda parece que lo hacemos desde arriba y si miramos la parte derecha, estamos en un plano inferior a lo que se representa allí.

La animación hace que la bola (punto) se desplace por el edificio con el fin de realzar las contradicciones que nos plantea Escher.

Los últimos juegos se realizan con la concha central. Primero la vemos como un plafón convexo pegado a un techo. El punto que viene por la derecha procede de una cerámica colgada del techo, mientras el de la izquierda viene del suelo que hay junto al personaje sentado junto a la puerta. Cuando llega al centro tiene que caer hacia la parte inferior del cuadro. 

Si por el contrario consideramos que la concha es una fuente cóncava  situada en el suelo, cuando llegue el punto rodará hacia el centro, lo sobrepasa y queda rodando un rato hasta detenerse por el rozamiento.

A0: (1000, 1000)
a = 22 (slider from -2 to 22, step 0.01)
a10 = Max(0, Min[1, a - 10])
a5 = Max(0, Min[1, a - 5])
a9 = Max(0, Min[1, a - 9])
a8 = Max(0, Min[1, a - 8])
a2 = Max(0, Min[1, a - 2])
a4 = Max(0, Min[1, a - 4])
a3 = Max(0, Min[1, a - 3])
a1 = Max(0, Min[1, a - 1])
A1 = (1.5368138528138362, -0.8661324041811858)
d = 11.33 (slider from 1 to 15, step 0.01)
A2: A1 + (d, 0)
r1 = Line(A1, A2)
o = 3.16 (slider from 1 to 10, step 0.001)
a7 = Max(0, Min[1, a - 7])
c = 13.76 (slider from 0 to 20, step 0.01)
a16 = Max(0, Min[1, a - 16])
a17 = Max(0, Min[1, a - 17])
a11 = Max(0, Min[1, a - 11])
a12 = Max(0, Min[1, a - 12])
a15 = Max(0, Min[1, a - 15])
a18 = Max(0, Min[1, a - 18])
a19 = Max(0, Min[1, a - 19])
a13 = Max(0, Min[1, a - 13])
a14 = Max(0, Min[1, a - 14])
b = 10 (slider from 0.5 to 20, step 0.01)
a6 = Max(0, Min[1, a - 6])
a71 = Max(0, Min[0.32, a - 7.4])
u = 1 (slider from 0 to 2)
dd: (1.25 * d)
a61 = Min(1, (2 * a6))
a62 = Max(0, (2 * (a6 - 0.5)))
a20 = Max(0, Min[1, a - 20])
a21 = Max(0, Min[1, a - 21])
a22 = Max(0, Min[1, a - 22])
a23 = Max(0, Min[1, a - 23])
a24 = Max(0, Min[1, a - 24])
a25 = Max(0, Min[1, a - 25])
a26 = Max(0, Min[1, a - 26])
a27 = Max(0, Min[1, a - 27])
a28 = Max(0, Min[1, a - 28])
a29 = Max(0, Min[1, a - 29])
a30 = Max(0, Min[1, a - 30])
a31 = Max(0, Min[1, a - 31])
a32 = Max(0, Min[1, a - 32])
a33 = Max(0, Min[1, a - 33])
a34 = Max(0, Min[1, a - 34])
a35 = Max(0, Min[1, a - 35])
a36 = Max(0, Min[1, a - 36])
a37 = Max(0, Min[1, a - 37])
in1 = If(a > 32.5 ∧ a < 32.7, 1, 0)
in2 = If(a > 35.5 ∧ a < 35.7, 1, 0)
in = If(in1 ≟ 1 ∨ in2 ≟ 1, 1, 0)
B5 = (8.86311372046365, 5.944768927423502)
B = (8.193778442393263, 6.886021662209988)
C51 = (7.085191888089184, 6.530437295735093)
C2 = (8.737613355825452, 0.7574205223779874)
E = (7.357109344805279, 1.1130048888528816)
B2 = (5.872021696586608, 0.778337249817687)
e = Circle(C2, E, B2)
C1_1 = (2.7763460355110685, -0.2674991221672958)
H = (3.7385154977372497, -0.5184998514436917)
B1 = (4.70068495996343, -0.24658239472759616)
f = Circle(C1_1, H, B1)
B3 = (11.665955197383397, -0.12108203008939822)
K = (10.850202827235112, -0.30933257704669515)
C3 = (9.80436645525013, -0.16291548496879754)
g = Circle(B3, K, C3)
B72 = (6.687774066734892, 5.2336001944737145)
N = (6.102105698423303, 5.923852199983803)
C72 = (5.202686418516221, 5.170850012154616)
h = Circle(B72, N, C72)
P: B5
Q = (8.151944987513863, 5.819268562785305)
C52 = (7.566276619202275, 5.212683467034014)
k = Circle(P, Q, C52)
T = (2.7554293080713688, 4.104096912729933)
B6 = (5.516437330111715, 6.321270021338097)
B_1 = (6.102105698423303, 6.886021662209988)
B61: C51
r = Circle(B6, B_1, B61)
t = Circle(B5, B, C51)
D1 = Center(f)
D2 = Center(e)
D3 = Center(g)
D52 = Center(k)
D51 = Center(t)
D61 = Center(r)
C9: C72
P_1 = (3.0691802196668627, 6.886021662209988)
B9 = (1.5840925714481915, 7.304356211003981)
c_1 = Circle(C9, P_1, B9)
D9 = Center(c_1)
D72 = Center(h)
b9 = Angle(C9, D9, B9)
b2 = Angle(C2, D2, B2)
b3 = Angle(C3, D3, B3)
x1: a1
c9: ((a12 * π) * b9 / (180°))
c2: ((a3 * π) * b2 / (180°))
c3: ((a5 * π) * b3 / (180°))
b1 = Angle(C1_1, D1, B1)
c1: ((π * a1) * b1 / (180°))
P050 = Rotate(C3, c3, D3)
P010 = Rotate(C1_1, c1, D1)
P030 = Rotate(B2, (-c2), D2)
P020: B1 + (a2 * (B2 - B1))
P040: C2 + (a4 * (C3 - C2))
B4 = (12.544457749850778, 4.062263457850533)
F = (11.812372289461294, 4.187763822488732)
C41 = (10.97570319187331, 3.183760905383148)
d_1 = Circle(B4, F, C41)
I = (11.603205015064297, 5.317267104232513)
C42 = (10.47370173332052, 4.627015098722424)
e_1 = Circle(B4, I, C42)
D41 = Center(d_1)
D42 = Center(e_1)
b41 = Angle(B4, D41, C41)
b42 = Angle(B4, D42, C42)
c41: ((a7 * π) * b41 / (180°))
c42: ((a7 * π) * b42 / (180°))
P060: B3 + (a6 * (B4 - B3))
P071 = Rotate(B4, c41, D41)
P072 = Rotate(B4, c42, D42)
b51 = Angle(B5, D51, C51)
b52 = Angle(B5, D52, C52)
C5 = NaN
P081: C41 + (a8 * (B5 - C41))
P082: C42 + (a8 * (B5 - C42))
c51: ((a9 * π) * b51 / (180°))
c52: ((a9 * π) * b52 / (180°))
P091 = Rotate(B5, c51, D51)
P092 = Rotate(B5, c52, D52)
b61 = Angle(C51, D61, B6)
c61: ((a10 * π) * b61 / (180°))
P101 = Rotate(C51, c61, D61)
B52 = NaN
P102: C52 + (a10 * (B72 - C52))
P111: B6 + (a11 * (C72 - B6))
b72 = Angle(B72, D72, C72)
A = (-3.3964881248628536, 11.231732586412752)
c72: ((a11 * π) * b72 / (180°))
P112 = Rotate(B72, c72, D72)
P120 = Rotate(C9, c9, D9)
C = Point(r1)
i = OrthogonalLine(C, r1)
C01 = Point(i)
C0 = Point(i)
a0 = Max(0, Min[1, a])
a01 = Max(0, Min[1, a + 1])
P001: C01 + (a01 * (C0 - C01))
P002: C0 + (a0 * (C1_1 - C0))
C02 = (1.5840925714481915, 6.363103476217495)
a02 = Max(0, Min[1, a + 2])
P000: C02 + (a02 * (C01 - C02))
BA2 = (6.415856610018797, 1.7405067120438713)
G = (7.189775525287683, 1.6777565297247723)
BA1 = (7.921860985677168, 1.7823401669232706)
p = Circle(BA2, G, BA1)
BB2 = (6.645940611855493, 1.3849223455689772)
BC2 = (7.6499435289610735, 2.054257623639366)
q = Circle(BB2, G, BC2)
BA0 = (8.967697357662148, 2.200674715717264)
BA = (10.452785005880818, 4.647931826162123)
DA = Center(p)
DB = Center(q)
ba = Angle(BA2, DA, BA1)
bb = Angle(G, DB, BC2)
j: (c * a)
ca1: ((3 * π) * ba / (180°) / 4)
ca2: (π * ba / (180°) / 2)
ca3: (π * ba / (180°) / 3)
ca4: (π * ba / (180°) / 9)
BA3 = Rotate(BA1, (-ca1), DA)
BA4 = Rotate(BA3, ca2, DA)
BA5 = Rotate(BA4, (-ca3), DA)
BA6 = Rotate(BA5, (-ca4), DA)
c18: ((-ca1) * a18)
c19: (ca2 * a19)
DA1 = NaN
P180 = Rotate(BA1, c18, DA)
P190 = Rotate(BA3, c19, DA)
c20: ((-ca3) * a20)
c21: ((-ca4) * a21)
P200 = Rotate(BA4, c20, DA)
P210 = Rotate(BA5, (-c21), DA)
P160: BA + (a16 * (BA0 - BA))
BB1 = (5.537354057551415, 1.3221721632498782)
BC1 = (8.633029718626954, 2.179757988277564)
J = (3.5920984056593523, -1.8780871350241695)
P131: BB1 + (a13 * (BB2 - BB1))
P132: BC1 + (a13 * (BC2 - BC1))
c14: ((a14 * π) * bb / (180°))
P141 = Rotate(BB2, c14, DB)
P142 = Rotate(BC2, (-c14), DB)
l = OrthogonalLine(G, r1)
D = Intersect(r1, l)
P150: G + (a15 * (D - G))
P170: BA0 + (a17 * (BA1 - BA0))
v = If(a < 6, 0.3, If[a ≥ 6 ∧ a ≤ 13, 0.1, 0.2])