4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Hora solar

Hora oficial

Verano

grados

minutos

Latitud

Longitud

grados

minutos

N

S

E

O

1 Ene

1 Feb

1 Mar

1 Abr

1 May

1 Jun

1 Jul

1 Ago

1 Sep

1 Oct

1 Nov

1 Dic

Fechas analema

N

S

E

O

NE

NO

SO

SE

Semieje mayor (cm)

Focos

F1

F2

Ene

Feb

Mar

Abr

May

Jun

Jul

Ago

Sep

Oct

Nov

Dic

altura Gnomon (cm)

2

4

6

8

10

12

14

16

18

20

22

24

Hora solar

Fechas analema

Hora oficial

Verano

Focos

Horas: {4.000000000000000, 5.000000000000000, 6.000000000000000, 7.000000000000000, 8.000000000000000, 9.000000000000000, 10.00000000000000, 11.00000000000000, 12.00000000000000, 13.00000000000000, 14.00000000000000, 15.00000000000000, 16.00000000000000, 17.00000000000000, 18.00000000000000, 19.00000000000000, 20.00000000000000}
Angulos = Sequence(15.00000000000000 * (18.00000000000000 - Element[Horas, n]), n, 1.000000000000000, 17.00000000000000)
u = 400 (slider from 0 to 500, step 25)
SolarX = Sequence(u cos(Element[Angulos, n] °), n, 1.000000000000000, 17.00000000000000)
ecTiempo: {-3.460000000000000, -7.430000000000000, -10.96000000000000, -13.58000000000000, -14.26000000000000, -13.78000000000000, -12.41000000000000, -10.35000000000000, -7.550000000000000, -3.940000000000000, -1.380000000000000, 1.030000000000000, 2.870000000000000, 3.590000000000000, 3.490000000000000, 2.210000000000000, 6.200000000000000E-1, -1.500000000000000, -3.800000000000000, -5.330000000000000, -6.350000000000000, -6.350000000000000, -5.410000000000000, -3.460000000000000, -1.100000000000000E-1, 2.890000000000000, 6.440000000000000, 10.22000000000000, 12.92000000000000, 15.17000000000000, 16.44000000000000, 16.14000000000000, 14.46000000000000, 11.06000000000000, 7.320000000000000, 2.540000000000000}
AnalemaX = Sequence(-1.000000000000000 u sin(Element[ecTiempo, n] / 4.000000000000000 °), n, 1.000000000000000, 36.00000000000000)
declinacion: {-23.01000000000000, -21.97000000000000, -20.13000000000000, -17.12000000000000, -14.37000000000000, -10.94000000000000, -7.610000000000000, -4.130000000000000, -1.800000000000000E-1, 4.520000000000000, 7.930000000000000, 11.50000000000000, 15.06000000000000, 17.61000000000000, 19.97000000000000, 22.93000000000000, 23.00000000000000, 23.43000000000000, 23.10000000000000, 22.23000000000000, 20.66000000000000, 18.02000000000000, 15.57000000000000, 12.45000000000000, 8.290000000000000, 4.950000000000000, 1.100000000000000, -3.180000000000000, -6.630000000000000, -10.33000000000000, -14.42000000000000, -17.13000000000000, -19.98000000000000, -21.80000000000000, -22.91000000000000, -23.43000000000000, -23.01000000000000}
v3 = 1 (slider from -1 to 1, step 2)
v2 = 33.5 (slider from 0 to 59.5, step 0.5)
v1 = 43 (slider from 0 to 89, step 1)
d2: v3 * (v1 + v2 / 60.00000000000000)
b5: u sin(d2 °)
SolarY = Sequence(b5 sin(Element[Angulos, n] °), n, 1.000000000000000, 17.00000000000000)
AnalemaY = Sequence(u cos(d2 °) tan(Element[declinacion, n] °), n, 1.000000000000000, 36.00000000000000)
fijaC = 0
C: (418.6500000000000, -1.000000000000000 * 252.4400000000000 + fijaC)
z2 = OrthogonalLine(C, xAxis)
fijaCentroAnuario = 0
CentroAnuario: (-1.000000000000000 * 123.3300000000000, -1.000000000000000 * 252.4400000000000 + fijaCentroAnuario)
CentroHorario = Mirror(CentroAnuario, yAxis)
Aux2: (x(CentroAnuario) + 400.0000000000000, y(CentroAnuario))
j = Ray(CentroAnuario, Aux2)
l: 1.000000000000000 y = y(CentroAnuario)
RadioAnuario = (-147.78418838526915, -190.5280516997166)
k = Circle(CentroAnuario, RadioAnuario)
mEne = Intersect(k, j, 1.000000000000000)
Hora06 = Mirror(mEne, yAxis)
Hora00 = Rotate(Hora06, 90.00000000000000°, CentroHorario)
Hora12 = Rotate(Hora06, 270.0000000000000°, CentroHorario)
m = Line(Hora12, l)
Zcenit = Intersect(z2, m)
r = Circle(C, Zcenit)
Zang0 = Intersect(r, l, 1.000000000000000)
Zang15 = Rotate(Zcenit, 75.00000000000001°, C)
s = CircleArc(C, Zcenit, Zang15)
Z = Point(s)
γ = Angle(Z, C, Zang0)
PhP = Sequence((Element[SolarX, s], Element[SolarY, s] sin(γ)), s, 1.000000000000000, 17.00000000000000)
Ph20 = Element(PhP, 17.00000000000000)
Ph19 = Element(PhP, 16.00000000000000)
Ph18 = Element(PhP, 15.00000000000000)
Ph17 = Element(PhP, 14.00000000000000)
Ph16 = Element(PhP, 13.00000000000000)
Ph15 = Element(PhP, 12.00000000000000)
Ph03: (-1.000000000000000 x(Ph15), -1.000000000000000 y(Ph15))
Ph14 = Element(PhP, 11.00000000000000)
Ph02: (-1.000000000000000 x(Ph14), -1.000000000000000 y(Ph14))
Ph13 = Element(PhP, 10.00000000000000)
Ph01: (-1.000000000000000 x(Ph13), -1.000000000000000 y(Ph13))
Ph12 = Element(PhP, 9.000000000000000)
Ph00: (-1.000000000000000 x(Ph12), -1.000000000000000 y(Ph12))
Ph11 = Element(PhP, 8.000000000000000)
Ph23: (-1.000000000000000 x(Ph11), -1.000000000000000 y(Ph11))
Ph10 = Element(PhP, 7.000000000000000)
Ph22: (-1.000000000000000 x(Ph10), -1.000000000000000 y(Ph10))
Ph09 = Element(PhP, 6.000000000000000)
Ph21: (-1.000000000000000 x(Ph09), -1.000000000000000 y(Ph09))
Ph08 = Element(PhP, 5.000000000000000)
Ph07 = Element(PhP, 4.000000000000000)
Ph06 = Element(PhP, 3.000000000000000)
Ph05 = Element(PhP, 2.000000000000000)
Ph04 = Element(PhP, 1.000000000000000)
Reloj: {Ph00, Ph01, Ph02, Ph03, Ph04, Ph05, Ph06, Ph07, Ph08, Ph09, Ph10, Ph11, Ph12, Ph13, Ph14, Ph15, Ph16, Ph17, Ph18, Ph19, Ph20, Ph21, Ph22, Ph23, Ph00}
Analema = Sequence((Element[AnalemaX, n], Element[AnalemaY, n] sin(γ)), n, 1.000000000000000, 36.00000000000000)
A = Point(k)
α = Angle(mEne, CentroAnuario, A)
t: 1.000000000000000 + floor(365.0000000000000 α / (360.0000000000000 °))
gMes = If(t > 334.0000000000000, 12.00000000000000, If[t > 304.0000000000000, 11.00000000000000, If[t > 273.0000000000000, 10.00000000000000, If[t > 243.0000000000000, 9.000000000000000, If[t > 212.0000000000000, 8.000000000000000, If[t > 181.0000000000000, 7.000000000000000, If[t > 151.0000000000000, 6.000000000000000, If[t > 120.0000000000000, 5.000000000000000, If[t > 90.00000000000000, 4.000000000000000, If[t > 59.00000000000000, 3.000000000000000, If[t > 31.00000000000000, 2.000000000000000, 1.000000000000000]]]]]]]]]])
gFinmes = If(gMes ≟ 4.000000000000000 ∨ gMes ≟ 6.000000000000000 ∨ gMes ≟ 9.000000000000000 ∨ gMes ≟ 11.00000000000000, 2.000000000000000, If[gMes ≟ 2.000000000000000, 0.000000000000000, 3.000000000000000])
gDia = If(t > 334.0000000000000, t - 334.0000000000000, If[t > 304.0000000000000, t - 304.0000000000000, If[t > 273.0000000000000, t - 273.0000000000000, If[t > 243.0000000000000, t - 243.0000000000000, If[t > 212.0000000000000, t - 212.0000000000000, If[t > 181.0000000000000, t - 181.0000000000000, If[t > 151.0000000000000, t - 151.0000000000000, If[t > 120.0000000000000, t - 120.0000000000000, If[t > 90.00000000000000, t - 90.00000000000000, If[t > 59.00000000000000, t - 59.00000000000000, If[t > 31.00000000000000, t - 31.00000000000000, t]]]]]]]]]])
gDias = If(gDia > 19.00000000000000, 9.000000000000000 + gFinmes, If[gDia > 9.000000000000000, 10.00000000000000, 9.000000000000000])
gDecena = If(gDia > 19.00000000000000, 2.000000000000000, If[gDia > 9.000000000000000, 1.000000000000000, 0.000000000000000])
gIndice: 3.000000000000000 gMes + gDecena - 2.000000000000000
gPosicion = If(gDia > 19.00000000000000, gDia - 20.00000000000000, If[gDia > 9.000000000000000, gDia - 10.00000000000000, gDia - 1.000000000000000])
Gnomon = If(gIndice < 36.00000000000000, (1.000000000000000 - gPosicion / gDias) Element[Analema, gIndice] + gPosicion / gDias Element[Analema, gIndice + 1.000000000000000], (1.000000000000000 - gPosicion / gDias) Element[Analema, gIndice] + gPosicion / gDias Element[Analema, 1.000000000000000])
Gnomon0: (x(Gnomon), y(Gnomon) / sin(γ))
declinacionHoy: (gPosicion / gDias Element[declinacion, gIndice + 1.000000000000000] + (1.000000000000000 - gPosicion / gDias) Element[declinacion, gIndice]) °
RadioHorario = Mirror(RadioAnuario, yAxis)
p = Circle(CentroHorario, RadioHorario)
B = Point(p)
β = Angle(B, CentroHorario, Hora00)
minuto2: β 1440.000000000000 / (360.0000000000000 °)
hora: floor(minuto2 / 60.00000000000000)
minutos: minuto2 - hora 60.00000000000000
angHorario: (180.0000000000000 - 15.00000000000000 minuto2 / 60.00000000000000) °
elevacion: asin(cos(angHorario) cos(declinacionHoy) cos(d2 °) + sin(declinacionHoy) sin(d2 °)) 180.0000000000000 ° / 3.140000000000000
Sombra = If(elevacion > 180.0000000000000 °, Gnomon, minutos / 60.00000000000000 Element[Reloj, hora + 2.000000000000000] + (1.000000000000000 - minutos / 60.00000000000000) Element[Reloj, hora + 1.000000000000000])
Sombra0: (x(Sombra), y(Sombra) / sin(γ))
gAltura = 200 (slider from 100 to 250, step 1)
vectorSombra0 = Vector(Gnomon0, Sombra0)
longitudSombra = If(elevacion > 180.0000000000000 °, 0.000000000000000, gAltura / tan(elevacion))
vectorSombra = Vector(Gnomon, Sombra)
w3 = -1 (slider from -1 to 1, step 2)
w2 = 55.5 (slider from 0 to 59.5, step 0.5)
w1 = 5 (slider from 0 to 14, step 1)
d3: -1.000000000000000 w3 * (w1 + w2 / 60.00000000000000)
AngulosOFI = Sequence(d3 + Element[Angulos, n], n, 1.000000000000000, 17.00000000000000)
OficialX = Sequence(u cos(Element[AngulosOFI, n] °), n, 1.000000000000000, 17.00000000000000)
OficialY = Sequence(b5 sin(Element[AngulosOFI, n] °), n, 1.000000000000000, 17.00000000000000)
PofiP = Sequence((Element[OficialX, s], Element[OficialY, s] sin(γ)), s, 1.000000000000000, 17.00000000000000)
a: 1.000000000000000 y = 1.000000000000000 x sin(γ)
b: 1.000000000000000 y = -1.000000000000000 * 1.000000000000000 x sin(γ)
e: 1.000000000000000 y = 1.000000000000000 x tan(22.50000000000000 °) sin(γ)
Pofi06 = Element(PofiP, 2.000000000000000)
Pofi07 = Element(PofiP, 3.000000000000000)
Pofi08 = Element(PofiP, 4.000000000000000)
Pofi09 = Element(PofiP, 5.000000000000000)
Pofi10 = Element(PofiP, 6.000000000000000)
Pofi11 = Element(PofiP, 7.000000000000000)
Pofi12 = Element(PofiP, 8.000000000000000)
Pofi13 = Element(PofiP, 9.000000000000000)
Pofi14 = Element(PofiP, 10.00000000000000)
Pofi15 = Element(PofiP, 11.00000000000000)
Pofi16 = Element(PofiP, 12.00000000000000)
Pofi17 = Element(PofiP, 13.00000000000000)
Pofi18 = Element(PofiP, 14.00000000000000)
Pofi19 = Element(PofiP, 15.00000000000000)
Pofi20 = Element(PofiP, 16.00000000000000)
Pofi21 = Element(PofiP, 17.00000000000000)
verSolar = true
verOficial = true
verVerano = true
AnalemaGrafo = Sequence(Segment[Element[Analema, n], Element[Analema, n + 1.000000000000000]], n, 1.000000000000000, 35.00000000000000)
AnalemaCierre = Segment(Element[Analema, 36.00000000000000], Element[Analema, 1.000000000000000])
elipse = Conic(Ph06, Ph09, Ph12, Ph15, Ph18)
Ana01 = Element(Analema, 1.000000000000000)
Ana02 = Element(Analema, 4.000000000000000)
Ana03 = Element(Analema, 7.000000000000000)
Ana04 = Element(Analema, 10.00000000000000)
Ana05 = Element(Analema, 13.00000000000000)
Ana06 = Element(Analema, 16.00000000000000)
Ana07 = Element(Analema, 19.00000000000000)
Ana08 = Element(Analema, 22.00000000000000)
Ana09 = Element(Analema, 25.00000000000000)
Ana10 = Element(Analema, 28.00000000000000)
Ana11 = Element(Analema, 31.00000000000000)
Ana12 = Element(Analema, 34.00000000000000)
verFechas = true
RosaE: (u + 50.00000000000000, -1.000000000000000 * 8.000000000000000 sin(γ))
RosaNE: (u cos(45.00000000000000 °), (u sin(45.00000000000000 °) + 10.00000000000000) sin(γ))
RosaN: (-1.000000000000000 * 8.000000000000000, (abs(b5) + 50.00000000000000) sin(γ))
RosaNO: (-1.000000000000000 x(RosaNE) - 30.00000000000000, y(RosaNE))
RosaO: (-1.000000000000000 x(RosaE), y(RosaE))
RosaSO: (x(RosaNO), -1.000000000000000 y(RosaNO) - 15.00000000000000)
RosaS: (x(RosaN), -1.000000000000000 y(RosaN) - 20.00000000000000)
RosaSE: (x(RosaNE), y(RosaSO))
verFocos = false
Foco1: (-1.000000000000000 sqrt(u^(2.000000000000000) - b5^(2.000000000000000)), 0.000000000000000)
Foco2: (sqrt(u^(2.000000000000000) - b5^(2.000000000000000)), 0.000000000000000)
Aux1: (x(CentroAnuario), y(CentroAnuario) + 400.0000000000000)
mFeb = Rotate(mEne, 30.57534246575342°, CentroAnuario)
mMar = Rotate(mEne, 58.19178082191780°, CentroAnuario)
mAbr = Rotate(mEne, 88.76712328767123°, CentroAnuario)
mMay = Rotate(mEne, 118.3561643835616°, CentroAnuario)
mJun = Rotate(mEne, 148.9315068493151°, CentroAnuario)
mJul = Rotate(mEne, 178.5205479452055°, CentroAnuario)
mAgo = Rotate(mEne, 209.0958904109589°, CentroAnuario)
mSep = Rotate(mEne, 239.6712328767123°, CentroAnuario)
mOct = Rotate(mEne, 269.2602739726028°, CentroAnuario)
mNov = Rotate(mEne, 299.8356164383562°, CentroAnuario)
mDic = Rotate(mEne, 329.4246575342466°, CentroAnuario)
fechaEnero: gDia + " de Enero"
fechaFebrero: gDia + " de Febrero"
fechaMarzo: gDia + " de Marzo"
fechaAbril: gDia + " de Abril"
fechaMayo: gDia + " de Mayo"
fechaJunio: gDia + " de Junio"
fechaJulio: gDia + " de Julio"
fechaAgosto: gDia + " de Agosto"
fechaSeptiembre: gDia + " de Septiembre"
fechaOctubre: gDia + " de Octubre"
fechaNoviembre: gDia + " de Noviembre"
fechaDiciembre: gDia + " de Diciembre"
mPos: mJul + (10.00000000000000, 0.000000000000000)
i = Segment(Gnomon, Sombra)
Hora04 = Rotate(Hora06, 30.00000000000000°, CentroHorario)
Hora02 = Rotate(Hora06, 59.99999999999999°, CentroHorario)
Hora22 = Rotate(Hora06, 120.0000000000000°, CentroHorario)
Hora20 = Rotate(Hora06, 150.0000000000000°, CentroHorario)
Hora18 = Rotate(Hora06, 180.0000000000000°, CentroHorario)
Hora16 = Rotate(Hora06, 210.0000000000000°, CentroHorario)
Hora14 = Rotate(Hora06, 240.0000000000000°, CentroHorario)
Hora10 = Rotate(Hora06, 300.0000000000001°, CentroHorario)
Hora08 = Rotate(Hora06, 329.9999999999999°, CentroHorario)
arco07 = CircleArc(CentroHorario, Hora16, Hora14)
arco08 = CircleArc(CentroHorario, Hora12, Hora10)
arco09 = CircleArc(CentroHorario, Hora08, Hora06)
arco10 = CircleArc(CentroHorario, Hora04, Hora02)
arco11 = CircleArc(CentroHorario, Hora00, Hora22)
arco12 = CircleArc(CentroHorario, Hora20, Hora18)
arco01 = CircleArc(CentroAnuario, mFeb, mMar)
arco02 = CircleArc(CentroAnuario, mAbr, mMay)
arco03 = CircleArc(CentroAnuario, mJun, mJul)
arco04 = CircleArc(CentroAnuario, mAgo, mSep)
arco05 = CircleArc(CentroAnuario, mOct, mNov)
arco06 = CircleArc(CentroAnuario, mDic, mEne)
tHora1: hora + " : " + (floor(minutos))
tHora2: hora + " : 0" + (floor(minutos))
Pofi05 = Element(PofiP, 1.000000000000000)
q = CircleSector(C, Zcenit, Zang0)
GnomonExtremo: (x(Gnomon), y(Gnomon) + gAltura cos(γ))
segmentoGnomon = Segment(Gnomon, GnomonExtremo)
SombraExtremoPlano: Gnomon0 + UnitVector[vectorSombra0] longitudSombra
SombraExtremo: (x(SombraExtremoPlano), y(SombraExtremoPlano) sin(γ))
sombra = Segment(Gnomon, SombraExtremo)
poly1, gnomonextremo, sombraextremo, gnomon = Polygon(SombraExtremo, Gnomon, GnomonExtremo)
h: 1.000000000000000 y = 1.000000000000000 x tan(67.50000000000000 °) sin(γ)
f: 1.000000000000000 y = -1.000000000000000 * 1.000000000000000 x tan(22.50000000000000 °) sin(γ)
g: 1.000000000000000 y = -1.000000000000000 * 1.000000000000000 x tan(67.50000000000000 °) sin(γ)
colorSombra = If(longitudSombra ≟ 0.000000000000000, 1.000000000000000, 226.0000000000000 / 255.0000000000000 Max[0.000000000000000, 1.000000000000000 - 100.0000000000000 / longitudSombra])