Ascenso y descenso

Maurits Cornelius Escher. Litografía. 1960

Nos presenta una torre en la que un grupo de monjes o bien no paran de subir (los que van por el exterior) o no paran de bajar (los del interior) en una escalera sin fin. Escher se basa en la escalera imposible de Penrose, la representación en el plano de una escalera que gira cuatro veces 90º y los escalones bajan o suben según se recorra en una dirección u otra

Utilizamos primero una pelota roja para hacer el recorrido de los monjes que suben. y después una bola verde para acompañar a los que bajan. Una vez han terminado estos dos recorridos se inicia otro con las dos bolas a la vez para resaltar el efecto.

Tamaño

de las bolas

A1 = (-1.2320595502059108, -2.259860627177694)
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)
a = 0 (slider from 0 to 16, step 0.01)
a7 = Max(0, Min[1, a - 7])
c = 13.76 (slider from 0 to 20, step 0.01)
a1 = Max(0, Min[1, a - 1])
a3 = Max(0, Min[1, a - 3])
a16 = Max(0, Min[1, a - 16])
a17 = Max(0, Min[1, a - 17])
a4 = Max(0, Min[1, a - 4])
a2 = Max(0, Min[1, a - 2])
a8 = Max(0, Min[1, a - 8])
a9 = Max(0, Min[1, a - 9])
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])
a5 = Max(0, Min[1, a - 5])
a10 = Max(0, Min[1, a - 10])
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)
P3 = (1.3708510549854367, 6.498011549080019)
P2 = (4.22913775437506, 4.4599288590804695)
P1 = (7.050142453337862, 7.430061559750545)
P4 = (2.9988317402899614, 8.001718899628468)
f = Line(P1, P4)
g = Line(P2, P3)
h = Line(P3, P4)
i = Line(P2, P1)
E1 = Intersect(f, g)
E5 = (9.448617814130024, 2.185726833044387)
E6 = (10.989607165105298, 6.299174213470307)
j = Ray(E1, E5)
k = Ray(E1, E6)
E2 = Intersect(h, i)
E3 = (-0.5305309667824432, 4.024972187434225)
l = Ray(E2, E3)
E4 = (2.017072395717004, 2.6952475055442746)
m = Ray(E2, E4)
Q3 = Intersect(j, l)
Q2 = Intersect(k, l)
Q1 = Intersect(k, m)
Q4 = Intersect(j, m)
c1, a_1, b_1, c_1, d_1 = Polygon(P3, P2, P1, P4)
c2, k_1, n, m_1, l_1 = Polygon(Q3, Q4, Q1, Q2)
R01: P1 + (a1 * (P2 - P1))
R02: P2 + (a2 * (P3 - P2))
R03: P3 + (a3 * (P4 - P3))
R04: P4 + (a4 * (P1 - P4))
S01: Q1 + (a6 * (Q2 - Q1))
S02: Q2 + (a7 * (Q3 - Q2))
S03: Q3 + (a8 * (Q4 - Q3))
S04: Q4 + (a9 * (Q1 - Q4))
R11: P1 + (a11 * (P2 - P1))
R12: P2 + (a12 * (P3 - P2))
R13: P3 + (a13 * (P4 - P3))
R14: P4 + (a14 * (P1 - P4))
S11: Q1 + (a11 * (Q2 - Q1))
S12: Q2 + (a12 * (Q3 - Q2))
S13: Q3 + (a13 * (Q4 - Q3))
S14: Q4 + (a14 * (Q1 - Q4))
S = If(a ≤ 6, Q1, If[a > 6 ∧ a ≤ 7, S01, If[a > 7 ∧ a ≤ 8, S02, If[a > 8 ∧ a ≤ 9, S03, If[a > 9 ∧ a ≤ 10, S04, If[a > 10 ∧ a ≤ 11, Q1, If[a > 11 ∧ a ≤ 12, S11, If[a > 12 ∧ a ≤ 13, S12, If[a > 13 ∧ a ≤ 14, S13, If[a > 14 ∧ a ≤ 15, S14, If[a ≥ 14, Q1]]]]]]]]]])
R = If(a > 1 ∧ a ≤ 2, R01, If[a > 2 ∧ a ≤ 3, R02, If[a > 3 ∧ a ≤ 4, R03, If[a > 4 ∧ a ≤ 5, R04, If[a > 5 ∧ a ≤ 11, P1, If[a > 11 ∧ a ≤ 12, R11, If[a > 12 ∧ a ≤ 13, R12, If[a > 13 ∧ a ≤ 14, R13, If[a > 14 ∧ a ≤ 15, R14, If[a ≥ 15, P1, P1]]]]]]]]])
p = Line(P2, Q2)
A = Point(p)
q = OrthogonalLine(A, p)
dr = Distance(R, q)
ds = Distance(S, q)
D = (2.7850492837168375, 7.99737288232361)
e = 27 (slider from 20 to 40, step 1)
dr1: dr / e
ds1: ds / e
cr = Circle(R, dr1)
cs = Circle(S, ds1)
r = true
ee: 45 - e
texto2: "" + ee + ""