Author: Rafael Losada Liste

k = (0, 1)
f(x) = abs(x - 3.141592653589793)
curv = 1 (slider from 1 to 3, step 1)
curva: round(curv)
a = 1 (slider from 0.4 to 4, step 0.1)
b = -2 (slider from -5 to 5, step 0.1)
funciones: {a * x + b, sin(a * x + b), f(x)}
g1 = Element(funciones, 1.0)
g2 = Element(funciones, 2.0)
p2 = 1.2566370614359172
t = 0.36 (slider from 0 to 1, step 0.0010)
θ = 0.13962634015954636 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
p1 = 0.1308996938995747
r = If(curva < 3.0, 1.0 / a, 1.0)
f1(x) = g1(x - 2.0 * 3.141592653589793 * r * floor(x / (2.0 * 3.141592653589793 * r)))
f2(x) = g2(x - 2.0 * 3.141592653589793 * r * floor(x / (2.0 * 3.141592653589793 * r)))
f3(x) = f(x - 2.0 * 3.141592653589793 * r * floor(x / (2.0 * 3.141592653589793 * r)))
funcionesP: {f1(x), f2(x), f3(x)}
xB: x(Corner[2.0]) + r
xA: x(Corner[1.0]) - r
r1: (2.0 * 3.141592653589793 * r - 0.01) / (48.0 * r)
A1 = 1
h = Element(funcionesP, curva)
base: 0.5 + Max[y(Sequence[h(r * s * 2.0 * 3.141592653589793 / 48.0) * k, s, 0.0, 48.0])]
C = Point(Segment[(0.0, 0.0), (2.0 * 3.141592653589793 * r, 0.0)])
x1: x(C)
Base: (0.0, If[Defined[base], Min[base, 5.54], 5.54])
O: (xA + (xB - xA) * t, 0.0)
x0: x(O) / r
φ: x0
j0: (cos(φ), sin(φ) * sin(θ))
i0: (sin(φ), -cos(φ) * sin(θ))
lista3 = Sequence(O + r * cos(3.141592653589793 - s * p1) * i0 + r * sin(3.141592653589793 - s * p1) * j0, s, 0.0, 48.0)
j: (cos(φ), 0.0)
i: (sin(φ), 0.0)
lista4 = Sequence(O + r * cos(3.141592653589793 - s * r1) * i + r * sin(3.141592653589793 - s * r1) * j + h(r * s * r1) * k, s, 0.0, 48.0)
lista5 = Sequence(Polygon[Element[lista4, s], Element[lista4, s + 1.0], Element[lista3, s + 1.0] + Base, Element[lista3, s] + Base], s, 1.0, 48.0)
esc = 0.5773502691896258
faux(x) = 90.0 - x
D: O + r * cos(-(x1 / r) + 3.141592653589793) * i + r * sin(-(x1 / r) + 3.141592653589793) * j + h(x1) * k
curvaCilindro = Locus(D, C)
lista1 = Sequence(O + r * cos(s * p2) * i0 + r * sin(s * p2) * j0, s, 0.0, 4.0)
k0: (0.0, cos(θ))
nombres: {"Hélice", "Elipse", "Otra"}
texto1: "" + (Element[nombres, curva])
A2 = 2
A3: 2.0 * A2 - A1
A4: 2.0 * A3 - A2
A5: 2.0 * A4 - A3
A6: 2.0 * A5 - A4
A7: 2.0 * A6 - A5
A8: 2.0 * A7 - A6
A9: 2.0 * A8 - A7
A10: 2.0 * A9 - A8
A11: 2.0 * A10 - A9
A12: 2.0 * A11 - A10
B1 = Element(lista5, A1)
B2 = Element(lista5, A2)
B3 = Element(lista5, A3)
B4 = Element(lista5, A4)
B5 = Element(lista5, A5)
B6 = Element(lista5, A6)
B7 = Element(lista5, A7)
B8 = Element(lista5, A8)
B9 = Element(lista5, A9)
B10 = Element(lista5, A10)
B11 = Element(lista5, A11)
B12 = Element(lista5, A12)
lista2 = Sequence(Segment[O + Base, Element[lista1, s] + Base], s, 1.0, 5.0)
A13: 2.0 * A12 - A11
A14: 2.0 * A13 - A12
A15: 2.0 * A14 - A13
A16: 2.0 * A15 - A14
A17: 2.0 * A16 - A15
A18: 2.0 * A17 - A16
A19: 2.0 * A18 - A17
A20: 2.0 * A19 - A18
A21: 2.0 * A20 - A19
A22: 2.0 * A21 - A20
A23: 2.0 * A22 - A21
A24: 2.0 * A23 - A22
B13 = Element(lista5, A13)
B14 = Element(lista5, A14)
B15 = Element(lista5, A15)
B16 = Element(lista5, A16)
B17 = Element(lista5, A17)
B18 = Element(lista5, A18)
B19 = Element(lista5, A19)
B20 = Element(lista5, A20)
B21 = Element(lista5, A21)
B22 = Element(lista5, A22)
B23 = Element(lista5, A23)
B24 = Element(lista5, A24)
A25: 2.0 * A24 - A23
A26: 2.0 * A25 - A24
A27: 2.0 * A26 - A25
A28: 2.0 * A27 - A26
A29: 2.0 * A28 - A27
A30: 2.0 * A29 - A28
A31: 2.0 * A30 - A29
A32: 2.0 * A31 - A30
A33: 2.0 * A32 - A31
A34: 2.0 * A33 - A32
A35: 2.0 * A34 - A33
A36: 2.0 * A35 - A34
A37: 2.0 * A36 - A35
A38: 2.0 * A37 - A36
A39: 2.0 * A38 - A37
A40: 2.0 * A39 - A38
A41: 2.0 * A40 - A39
A42: 2.0 * A41 - A40
A43: 2.0 * A42 - A41
A44: 2.0 * A43 - A42
A45: 2.0 * A44 - A43
A46: 2.0 * A45 - A44
A47: 2.0 * A46 - A45
A48: 2.0 * A47 - A46
B25 = Element(lista5, A25)
B26 = Element(lista5, A26)
B27 = Element(lista5, A27)
B28 = Element(lista5, A28)
B29 = Element(lista5, A29)
B30 = Element(lista5, A30)
B31 = Element(lista5, A31)
B32 = Element(lista5, A32)
B33 = Element(lista5, A33)
B34 = Element(lista5, A34)
B35 = Element(lista5, A35)
B36 = Element(lista5, A36)
B37 = Element(lista5, A37)
B38 = Element(lista5, A38)
B39 = Element(lista5, A39)
B40 = Element(lista5, A40)
B41 = Element(lista5, A41)
B42 = Element(lista5, A42)
B43 = Element(lista5, A43)
B44 = Element(lista5, A44)
B45 = Element(lista5, A45)
B46 = Element(lista5, A46)
B47 = Element(lista5, A47)
B48 = Element(lista5, A48)
texto2: "f(x) = " + (Element[funciones, curva])
E: O + cos(-(x0) + 3.141592653589793) * i + sin(-(x0) + 3.141592653589793) * j + h(x0 * r) * k
e = Conic(Element[lista1, 1.0] + Base, Element[lista1, 2.0] + Base, Element[lista1, 3.0] + Base, Element[lista1, 4.0] + Base, Element[lista1, 5.0] + Base)
d = Segment(E, (x(E), 0.0) + Base)
panel, g, l, m, n = Polygon((-9.14, 5.54), (15.0, 5.54), (15.0, 10.04), (-9.14, 10.04))
v0 = 5 (slider from 1 to 9, step 1)
nada = -1.5 (slider from -5 to 5, step 0.1)
texto3: "a = " + a
texto4: "b = " + b
texto5: "v = " + v0
E': E
c = Segment(Element[lista4, 1.0], O + r * cos(-((2.0 * 3.141592653589793 * r - 0.01) / r) + 3.141592653589793) * i + r * sin(-((2.0 * 3.141592653589793 * r - 0.01) / r) + 3.141592653589793) * j + h(2.0 * 3.141592653589793 * r - 0.01) * k)
v: 2.0^(v0) / 50.0
xAB: xA - xB