Author: Rafael Losada Liste

8 C

6 V

Tetraedro:

Octaedro:

Cubo:

Dodecaedro:

Icosaedro:

4 C

4 V

6 C

8 V

12 C

20 V

20 C

12 V

12 A

6 A

12 A

30 A

30 A

Vector de Posición:

mira1 = Ellipse((-0.95, 0), (0.95, 0), 1)
A = Point(mira1)
φ1 = Angle((1, 0), (0, 0), A)
mira2 = Ellipse((0, -0.95), (0, 0.95), 1)
B = Point(mira2)
θ1 = Angle((0, 1), (0, 0), B)
x0 = 3 (slider from -5 to 5, step 0.1)
Escala = 5 (slider from 1 to 9, step 0.1)
O = (11.568652380000003, -8.3322774)
P = (20.94182058, 0.07458480000000013)
θ = If(cos(θ1) ≟ 0 ∨ sin(θ1) ≟ 0, θ1 + 0.01°, θ1)
φ = If(cos(φ1) ≟ 0 ∨ sin(φ1) ≟ 0, φ1 + 0.01°, φ1)
z0: (y(P - O) / Escala + x0 * cos(φ) * sin(θ) - (x(P - O) / Escala - x0 * sin(φ)) * tan(φ) * sin(θ)) / cos(θ)
y0: (x(P - O) / Escala - x0 * sin(φ)) / cos(φ)
M1: {{sin(φ), -cos(φ) * sin(θ), 0}, {cos(φ), sin(φ) * sin(θ), 0}, {0, cos(θ), 1}}
cuboL1 = Join({{1, 0, 0}} * M1)
M = Join({{x0, y0, z0}} * M1)
xyz0: sqrt(Element[M, 1]^(2) + Element[M, 2]^(2) + 1)
fi = 1.618033988749895
icoL1 = Join({{fi + 1, -(fi + 1), fi + 1}} * M1)
z1 = Element(M, 3)
y1 = Element(M, 2)
x1 = Element(M, 1)
k: (0, cos(θ)) * Escala
i: (sin(φ), -cos(φ) * sin(θ)) * Escala
j: (cos(φ), sin(φ) * sin(θ)) * Escala
V1: O + i + j - k
V2: O + i + j + k
V3: O + i - j + k
V4: O + i - j - k
V5: O - i + j + k
V6: O - i + j - k
V7: O - i - j + k
V8: O - i - j - k
octV1 = Midpoint(V1, V3)
octV2 = Midpoint(V1, V5)
octV3 = Midpoint(V8, V5)
octV4 = Midpoint(V3, V8)
octV5 = Midpoint(V3, V5)
octV6 = Midpoint(V1, V8)
cub1M = Midpoint(V1, V2)
cub2M = Midpoint(V3, V2)
cub4M = Midpoint(V1, V6)
cub5M = Midpoint(V7, V8)
cub1Ang = Angle(V3, cub1M, V4)
cubV2b = If(cub1Ang < 180°, V2, V3)
cubV1b = If(cub1Ang < 180°, V1, V4)
cub1: {Polygon[V3, V4, cubV1b, cubV2b]}
cub3Ang = Angle(V6, cub1M, V5)
cubV2c = If(cub3Ang < 180°, V2, V5)
cubV1c = If(cub3Ang < 180°, V1, V6)
cub3: {Polygon[V6, V5, cubV2c, cubV1c]}
cub5Ang = Angle(V5, cub5M, V6)
cubV5b = If(cub5Ang < 180°, V5, V7)
cubV6b = If(cub5Ang < 180°, V6, V8)
cub5: {Polygon[V8, V7, cubV5b, cubV6b]}
cub6Ang = Angle(V4, cub5M, V3)
cubV7b = If(cub6Ang < 180°, V7, V3)
cubV8b = If(cub6Ang < 180°, V8, V4)
cub6: {Polygon[V4, V3, cubV7b, cubV8b]}
cub2Ang = Angle(V5, cub2M, V7)
cubV3b = If(cub2Ang < 180°, V3, V7)
cubV2d = If(cub2Ang < 180°, V2, V5)
cub2: {Polygon[V7, V5, cubV2d, cubV3b]}
cub4Ang = Angle(V4, cub4M, V8)
octA2 = Segment(octV3, octV2)
octA3 = Segment(octV3, octV4)
octA4 = Segment(octV1, octV4)
octA5 = Segment(octV1, octV5)
octA6 = Segment(octV2, octV5)
octA7 = Segment(octV3, octV5)
octA8 = Segment(octV4, octV5)
octA9 = Segment(octV1, octV6)
octA10 = Segment(octV2, octV6)
octA11 = Segment(octV3, octV6)
octA12 = Segment(octV4, octV6)
tetA1 = Segment(V1, V3)
tetA2 = Segment(V1, V8)
tetA3 = Segment(V3, V8)
tetA4 = Segment(V3, V5)
tetA5 = Segment(V1, V5)
tetA6 = Segment(V8, V5)
cubA1 = Segment(V1, V2)
cubA2 = Segment(V2, V3)
cubA3 = Segment(V3, V4)
cubA4 = Segment(V4, V1)
cubA5 = Segment(V1, V6)
cubA6 = Segment(V6, V8)
cubA7 = Segment(V8, V4)
cubA8 = Segment(V2, V5)
cubA9 = Segment(V5, V7)
cubA10 = Segment(V7, V3)
cubA11 = Segment(V6, V5)
cubA12 = Segment(V7, V8)
cubV1d = If(cub4Ang < 180°, V1, V4)
cubV6c = If(cub4Ang < 180°, V6, V8)
cub4: {Polygon[V8, V4, cubV1d, cubV6c]}
tet1Ang = Angle(V5, V1, V3)
tetV1 = If(tet1Ang < 180°, V1, V3)
tet1: {Polygon[V5, V3, tetV1]}
tet2Ang = Angle(V5, V8, V1)
tetV8 = If(tet2Ang < 180°, V8, V5)
tet2: {Polygon[V5, V1, tetV8]}
tet3Ang = Angle(V8, V5, V3)
tetV5 = If(tet3Ang < 180°, V5, V3)
tet3: {Polygon[V8, V3, tetV5]}
tet4Ang = Angle(V8, V3, V1)
tetV3 = If(tet4Ang < 180°, V3, V1)
tet4: {Polygon[V8, V1, tetV3]}
oct1Ang = Angle(octV2, octV1, octV5)
octV1b = If(oct1Ang < 180°, octV1, octV2)
oct2Ang = Angle(octV3, octV2, octV5)
octV2b = If(oct2Ang < 180°, octV2, octV3)
oct3Ang = Angle(octV4, octV3, octV5)
octV3b = If(oct3Ang < 180°, octV3, octV4)
oct4Ang = Angle(octV1, octV4, octV5)
octV4b = If(oct4Ang < 180°, octV4, octV1)
oct5Ang = Angle(octV6, octV1, octV2)
octV1c = If(oct5Ang < 180°, octV1, octV2)
oct6Ang = Angle(octV3, octV6, octV2)
octV6b = If(oct6Ang < 180°, octV6, octV3)
oct7Ang = Angle(octV6, octV3, octV4)
octV3c = If(oct7Ang < 180°, octV3, octV4)
oct8Ang = Angle(octV6, octV4, octV1)
octV4c = If(oct8Ang < 180°, octV4, octV1)
oct1: {Polygon[octV1b, octV2, octV5]}
oct2: {Polygon[octV2b, octV3, octV5]}
oct3: {Polygon[octV3b, octV4, octV5]}
oct4: {Polygon[octV4b, octV1, octV5]}
oct5: {Polygon[octV1c, octV2, octV6]}
oct6: {Polygon[octV6b, octV2, octV3]}
oct7: {Polygon[octV3c, octV4, octV6]}
oct8: {Polygon[octV4c, octV1, octV6]}
IcoV1: O + 0 * i + j + fi * k
IcoV2: O + 0 * i + j - fi * k
IcoV3: O + 0 * i - j + fi * k
IcoV4: O + 0 * i - j - fi * k
IcoV5: O + i + fi * j + 0 * k
IcoV6: O + i - fi * j + 0 * k
IcoV7: O - i + fi * j + 0 * k
IcoV8: O - i - fi * j + 0 * k
IcoV9: O + fi * i + 0 * j + k
IcoV10: O + fi * i + 0 * j - k
IcoV11: O - fi * i + 0 * j + k
IcoV12: O - fi * i + 0 * j - k
icoA04 = Segment(IcoV7, IcoV11)
icoA06 = Segment(IcoV11, IcoV12)
icoA08 = Segment(IcoV7, IcoV12)
icoA11 = Segment(IcoV11, IcoV8)
icoA13 = Segment(IcoV8, IcoV12)
icoA19 = Segment(IcoV7, IcoV2)
icoA21 = Segment(IcoV2, IcoV12)
icoA23 = Segment(IcoV4, IcoV12)
icoA25 = Segment(IcoV4, IcoV2)
icoA27 = Segment(IcoV4, IcoV8)
icoA29 = Segment(IcoV5, IcoV2)
icoA01 = Segment(IcoV5, IcoV7)
icoA02 = Segment(IcoV5, IcoV1)
icoA03 = Segment(IcoV1, IcoV7)
icoA05 = Segment(IcoV9, IcoV5)
icoA09 = Segment(IcoV5, IcoV10)
icoA10 = Segment(IcoV9, IcoV10)
icoA12 = Segment(IcoV2, IcoV10)
icoA07 = Segment(IcoV9, IcoV1)
icoA14 = Segment(IcoV4, IcoV10)
icoA15 = Segment(IcoV1, IcoV11)
icoA16 = Segment(IcoV3, IcoV1)
icoA17 = Segment(IcoV3, IcoV11)
icoA18 = Segment(IcoV3, IcoV8)
icoA20 = Segment(IcoV6, IcoV8)
icoA22 = Segment(IcoV6, IcoV3)
icoA24 = Segment(IcoV9, IcoV3)
icoA26 = Segment(IcoV9, IcoV6)
icoA28 = Segment(IcoV6, IcoV10)
icoA30 = Segment(IcoV6, IcoV4)
ico1Ang = Angle(IcoV3, IcoV9, IcoV6)
icoV9b = If(ico1Ang < 180°, IcoV9, IcoV6)
ico2Ang = Angle(IcoV3, IcoV6, IcoV8)
icoV6b = If(ico2Ang < 180°, IcoV6, IcoV8)
ico3Ang = Angle(IcoV3, IcoV8, IcoV11)
icoV8b = If(ico3Ang < 180°, IcoV8, IcoV11)
ico4Ang = Angle(IcoV3, IcoV11, IcoV1)
icoV11b = If(ico4Ang < 180°, IcoV11, IcoV1)
ico5Ang = Angle(IcoV3, IcoV1, IcoV9)
icoV1b = If(ico5Ang < 180°, IcoV1, IcoV9)
ico6Ang = Angle(IcoV9, IcoV10, IcoV6)
icoV10b = If(ico6Ang < 180°, IcoV10, IcoV6)
ico7Ang = Angle(IcoV6, IcoV10, IcoV4)
icoV10c = If(ico7Ang < 180°, IcoV10, IcoV4)
ico8Ang = Angle(IcoV6, IcoV4, IcoV8)
icoV4b = If(ico8Ang < 180°, IcoV4, IcoV8)
ico9Ang = Angle(IcoV8, IcoV4, IcoV12)
icoV4c = If(ico9Ang < 180°, IcoV4, IcoV12)
ico10Ang = Angle(IcoV8, IcoV12, IcoV11)
icoV12b = If(ico10Ang < 180°, IcoV12, IcoV11)
ico11Ang = Angle(IcoV11, IcoV12, IcoV7)
icoV12c = If(ico11Ang < 180°, IcoV12, IcoV11)
ico12Ang = Angle(IcoV11, IcoV7, IcoV1)
icoV7b = If(ico12Ang < 180°, IcoV7, IcoV11)
ico13Ang = Angle(IcoV1, IcoV7, IcoV5)
icoV7c = If(ico13Ang < 180°, IcoV7, IcoV1)
ico14Ang = Angle(IcoV1, IcoV5, IcoV9)
icoV5b = If(ico14Ang < 180°, IcoV5, IcoV1)
ico15Ang = Angle(IcoV9, IcoV5, IcoV10)
icoV5c = If(ico15Ang < 180°, IcoV5, IcoV9)
ico16Ang = Angle(IcoV10, IcoV2, IcoV4)
icoV2b = If(ico16Ang < 180°, IcoV2, IcoV4)
ico17Ang = Angle(IcoV4, IcoV2, IcoV12)
icoV2c = If(ico17Ang < 180°, IcoV2, IcoV4)
ico18Ang = Angle(IcoV2, IcoV7, IcoV12)
icoV7d = If(ico18Ang < 180°, IcoV7, IcoV12)
ico19Ang = Angle(IcoV5, IcoV7, IcoV2)
icoV7e = If(ico19Ang < 180°, IcoV7, IcoV5)
ico20Ang = Angle(IcoV5, IcoV2, IcoV10)
icoV2d = If(ico20Ang < 180°, IcoV2, IcoV5)
ico01: {Polygon[IcoV6, IcoV3, icoV9b]}
ico02: {Polygon[IcoV8, IcoV3, icoV6b]}
ico03: {Polygon[IcoV11, IcoV3, icoV8b]}
ico4: {Polygon[IcoV1, IcoV3, icoV11b]}
ico5: {Polygon[IcoV9, IcoV3, icoV1b]}
ico6: {Polygon[IcoV6, IcoV9, icoV10b]}
ico7: {Polygon[IcoV4, IcoV6, icoV10c]}
ico8: {Polygon[IcoV8, IcoV6, icoV4b]}
ico9: {Polygon[IcoV8, IcoV12, icoV4c]}
ico10: {Polygon[IcoV8, IcoV11, icoV12b]}
ico11: {Polygon[IcoV7, IcoV11, icoV12c]}
ico12: {Polygon[IcoV1, IcoV11, icoV7b]}
ico13: {Polygon[IcoV1, IcoV5, icoV7c]}
ico14: {Polygon[IcoV1, IcoV9, icoV5b]}
ico15: {Polygon[IcoV10, IcoV9, icoV5c]}
ico16: {Polygon[IcoV10, IcoV4, icoV2b]}
ico17: {Polygon[IcoV12, IcoV4, icoV2c]}
ico18: {Polygon[IcoV12, IcoV2, icoV7d]}
ico19: {Polygon[IcoV5, IcoV2, icoV7e]}
ico20: {Polygon[IcoV5, IcoV10, icoV2d]}
icoA07' = Segment(IcoV9, IcoV1)
icoA15M = Midpoint(IcoV1, IcoV11)
V15: O - (fi - 1) * i + fi * k
A13 = Segment(V5, V15)
icoA03M = Midpoint(IcoV1, IcoV7)
V12: O + fi * j - (1 - fi) * k
A12 = Segment(V5, V12)
A11 = Segment(V12, V2)
icoA07M = Midpoint(IcoV9, IcoV1)
V14: O + (fi - 1) * i + fi * k
A1 = Segment(V2, V14)
A2_1 = Segment(V14, V15)
icoA05M = Midpoint(IcoV9, IcoV5)
V11: O + fi * i - (1 - fi) * j
A10 = Segment(V2, V11)
icoA01M = Midpoint(IcoV5, IcoV7)
V20: O - (fi - 1) * k + fi * j
A20 = Segment(V12, V20)
A9 = Segment(V11, V1)
A19 = Segment(V20, V1)
A21 = Segment(V14, V3)
icoA10M = Midpoint(IcoV9, IcoV10)
V10: O + fi * i + (1 - fi) * j
A29 = Segment(V11, V10)
A30 = Segment(V10, V3)
A28 = Segment(V10, V4)
icoA14M = Midpoint(IcoV4, IcoV10)
V18: O + (fi - 1) * i - fi * k
A8 = Segment(V1, V18)
A27 = Segment(V4, V18)
A18 = Segment(V20, V6)
icoA21M = Midpoint(IcoV2, IcoV12)
V17: O - (fi - 1) * i - fi * k
A7 = Segment(V18, V17)
A17 = Segment(V17, V6)
A6 = Segment(V17, V8)
icoA27M = Midpoint(IcoV4, IcoV8)
V19: O - (fi - 1) * k - fi * j
A26 = Segment(V4, V19)
A25 = Segment(V19, V8)
icoA08M = Midpoint(IcoV12, IcoV7)
V13: O - fi * i - (1 - fi) * j
A16 = Segment(V6, V13)
A14 = Segment(V13, V5)
icoA13M = Midpoint(IcoV8, IcoV12)
V16: O - (fi - 1) * j - fi * i
A5 = Segment(V8, V16)
A15 = Segment(V16, V13)
A3_1 = Segment(V15, V7)
A4 = Segment(V16, V7)
icoA20M = Midpoint(IcoV8, IcoV6)
V9: O - fi * j + (-1 + fi) * k
A24 = Segment(V9, V19)
A22 = Segment(V3, V9)
A23 = Segment(V9, V7)
dodM9: (V1 + V11 + V2 + V12 + V20) / 5
dod9Ang = Angle(V11, dodM9, V1)
V2b = If(dod9Ang < 180°, V2, V11)
V12b = If(dod9Ang < 180°, V12, V11)
V20b = If(dod9Ang < 180°, V20, V1)
dodM1: (V15 + V14 + V2 + V12 + V5) / 5
dod1Ang = Angle(V12, dodM1, V5)
V2c = If(dod1Ang < 180°, V2, V12)
V14b = If(dod1Ang < 180°, V14, V12)
V15b = If(dod1Ang < 180°, V15, V5)
dodM3: (V15 + V5 + V13 + V16 + V7) / 5
dod3Ang = Angle(V5, dodM3, V13)
V15c = If(dod3Ang < 180°, V15, V5)
V7b = If(dod3Ang < 180°, V7, V5)
V16b = If(dod3Ang < 180°, V16, V13)
dodM4: (V13 + V6 + V20 + V12 + V5) / 5
dod4Ang = Angle(V20, dodM4, V6)
V12c = If(dod4Ang < 180°, V12, V20)
V5b = If(dod4Ang < 180°, V5, V20)
V13b = If(dod4Ang < 180°, V13, V6)
dodM12: (V1 + V6 + V20 + V18 + V17) / 5
dod12Ang = Angle(V1, dodM12, V18)
V20c = If(dod12Ang < 180°, V20, V1)
V6b = If(dod12Ang < 180°, V6, V1)
V17b = If(dod12Ang < 180°, V17, V18)
dodM5: (V13 + V16 + V6 + V8 + V17) / 5
dod5Ang = Angle(V16, dodM5, V13)
V6c = If(dod5Ang < 180°, V6, V13)
V17c = If(dod5Ang < 180°, V17, V13)
V8b = If(dod5Ang < 180°, V8, V16)
dodM8: (V2 + V14 + V3 + V10 + V11) / 5
dod8Ang = Angle(V10, dodM8, V11)
V2d = If(dod8Ang < 180°, V2, V11)
V14c = If(dod8Ang < 180°, V14, V11)
V3b = If(dod8Ang < 180°, V3, V10)
dodM2: (V9 + V7 + V3 + V14 + V15) / 5
dodM6: (V9 + V16 + V7 + V8 + V19) / 5
dodM7: (V9 + V4 + V3 + V10 + V19) / 5
dodM11: (V8 + V19 + V4 + V17 + V18) / 5
dodM10: (V1 + V18 + V4 + V10 + V11) / 5
dod2Ang = Angle(V15, dodM2, V7)
V14d = If(dod2Ang < 180°, V14, V15)
V3c = If(dod2Ang < 180°, V3, V15)
V9b = If(dod2Ang < 180°, V9, V7)
dod6Ang = Angle(V19, dodM6, V9)
V8c = If(dod6Ang < 180°, V8, V19)
V16c = If(dod6Ang < 180°, V16, V19)
V7c = If(dod6Ang < 180°, V7, V9)
dod7Ang = Angle(V4, dodM7, V10)
V3d = If(dod7Ang < 180°, V3, V10)
V9c = If(dod7Ang < 180°, V9, V10)
V19b = If(dod7Ang < 180°, V19, V4)
dod11Ang = Angle(V18, dodM11, V4)
V17d = If(dod11Ang < 180°, V17, V18)
V8d = If(dod11Ang < 180°, V8, V18)
V19c = If(dod11Ang < 180°, V19, V4)
dod10Ang = Angle(V1, dodM10, V11)
V18b = If(dod10Ang < 180°, V18, V1)
V4b = If(dod10Ang < 180°, V4, V1)
V10b = If(dod10Ang < 180°, V10, V11)
dod9: {Polygon[V2b, V12b, V20b, V1, V11]}
dod01: {Polygon[V2c, V14b, V15b, V5, V12]}
dod03: {Polygon[V15c, V7b, V16b, V13, V5]}
dod4: {Polygon[V12c, V5b, V13b, V6, V20]}
dod12: {Polygon[V20c, V6b, V17b, V18, V1]}
dod5: {Polygon[V6c, V17c, V8b, V16, V13]}
dod8: {Polygon[V2d, V14c, V3b, V10, V11]}
dod02: {Polygon[V14d, V3c, V9b, V7, V15]}
dod6: {Polygon[V8c, V16c, V7c, V9, V19]}
dod7: {Polygon[V3d, V9c, V19b, V4, V10]}
dod11: {Polygon[V17d, V8d, V19c, V4, V18]}
dod10: {Polygon[V18b, V4b, V10b, V11, V1]}
carasOcta = false
verticesOcta = false
carasTetra = false
verticesTetra = false
carasCubo = false
verticesCubo = false
carasDod = false
verticesDod = false
carasIco = false
verticesIco = false
aristasOcta = false
aristasTetra = false
aristasCubo = false
aristasDod = false
aristasIco = false
icoL10 = Join({{-(2 * fi + 1), -fi, 0}} * M1)
icoL11 = Join({{-(2 * fi + 1), fi, 0}} * M1)
icoL12 = Join({{-(fi + 1), fi + 1, fi + 1}} * M1)
icoL13 = Join({{0, 2 * fi + 1, fi}} * M1)
icoL14 = Join({{fi + 1, fi + 1, fi + 1}} * M1)
icoL15 = Join({{2 * fi + 1, fi, 0}} * M1)
icoL16 = Join({{fi, 0, -(2 * fi + 1)}} * M1)
icoL18 = Join({{-(fi + 1), fi + 1, -(fi + 1)}} * M1)
icoL19 = Join({{0, 2 * fi + 1, -fi}} * M1)
icoL2 = Join({{0, -(2 * fi + 1), fi}} * M1)
icoL20 = Join({{fi + 1, fi + 1, -(fi + 1)}} * M1)
icoL3 = Join({{-(fi + 1), -(fi + 1), fi + 1}} * M1)
icoL4 = Join({{-fi, 0, 2 * fi + 1}} * M1)
icoL5 = Join({{fi, 0, 2 * fi + 1}} * M1)
icoL6 = Join({{2 * fi + 1, -fi, 0}} * M1)
icoL7 = Join({{fi + 1, -(fi + 1), -(fi + 1)}} * M1)
icoL8 = Join({{0, -(2 * fi + 1), -fi}} * M1)
icoL9 = Join({{-(fi + 1), -(fi + 1), -(fi + 1)}} * M1)
icoM1: 1 - acos((x1 * Element[icoL1, 1] + y1 * Element[icoL1, 2] + 1) / (xyz0 * sqrt(Element[icoL1, 1]^(2) + Element[icoL1, 2]^(2) + 1))) / 3.141592653589793
icoL17 = Join({{-fi, 0, -(2 * fi + 1)}} * M1)
icoM2: 1 - acos((x1 * Element[icoL2, 1] + y1 * Element[icoL2, 2] + 1) / (xyz0 * sqrt(Element[icoL2, 1]^(2) + Element[icoL2, 2]^(2) + 1))) / 3.141592653589793
icoM3: 1 - acos((x1 * Element[icoL3, 1] + y1 * Element[icoL3, 2] + 1) / (xyz0 * sqrt(Element[icoL3, 1]^(2) + Element[icoL3, 2]^(2) + 1))) / 3.141592653589793
icoM4: 1 - acos((x1 * Element[icoL4, 1] + y1 * Element[icoL4, 2] + 1) / (xyz0 * sqrt(Element[icoL4, 1]^(2) + Element[icoL4, 2]^(2) + 1))) / 3.141592653589793
icoM5: 1 - acos((x1 * Element[icoL5, 1] + y1 * Element[icoL5, 2] + 1) / (xyz0 * sqrt(Element[icoL5, 1]^(2) + Element[icoL5, 2]^(2) + 1))) / 3.141592653589793
icoM6: 1 - acos((x1 * Element[icoL6, 1] + y1 * Element[icoL6, 2] + 1) / (xyz0 * sqrt(Element[icoL6, 1]^(2) + Element[icoL6, 2]^(2) + 1))) / 3.141592653589793
icoM7: 1 - acos((x1 * Element[icoL7, 1] + y1 * Element[icoL7, 2] + 1) / (xyz0 * sqrt(Element[icoL7, 1]^(2) + Element[icoL7, 2]^(2) + 1))) / 3.141592653589793
icoM8: 1 - acos((x1 * Element[icoL8, 1] + y1 * Element[icoL8, 2] + 1) / (xyz0 * sqrt(Element[icoL8, 1]^(2) + Element[icoL8, 2]^(2) + 1))) / 3.141592653589793
icoM9: 1 - acos((x1 * Element[icoL9, 1] + y1 * Element[icoL9, 2] + 1) / (xyz0 * sqrt(Element[icoL9, 1]^(2) + Element[icoL9, 2]^(2) + 1))) / 3.141592653589793
icoM10: 1 - acos((x1 * Element[icoL10, 1] + y1 * Element[icoL10, 2] + 1) / (xyz0 * sqrt(Element[icoL10, 1]^(2) + Element[icoL10, 2]^(2) + 1))) / 3.141592653589793
icoM11: 1 - acos((x1 * Element[icoL11, 1] + y1 * Element[icoL11, 2] + 1) / (xyz0 * sqrt(Element[icoL11, 1]^(2) + Element[icoL11, 2]^(2) + 1))) / 3.141592653589793
icoM12: 1 - acos((x1 * Element[icoL12, 1] + y1 * Element[icoL12, 2] + 1) / (xyz0 * sqrt(Element[icoL12, 1]^(2) + Element[icoL12, 2]^(2) + 1))) / 3.141592653589793
icoM13: 1 - acos((x1 * Element[icoL13, 1] + y1 * Element[icoL13, 2] + 1) / (xyz0 * sqrt(Element[icoL13, 1]^(2) + Element[icoL13, 2]^(2) + 1))) / 3.141592653589793
icoM14: 1 - acos((x1 * Element[icoL14, 1] + y1 * Element[icoL14, 2] + 1) / (xyz0 * sqrt(Element[icoL14, 1]^(2) + Element[icoL14, 2]^(2) + 1))) / 3.141592653589793
icoM15: 1 - acos((x1 * Element[icoL15, 1] + y1 * Element[icoL15, 2] + 1) / (xyz0 * sqrt(Element[icoL15, 1]^(2) + Element[icoL15, 2]^(2) + 1))) / 3.141592653589793
icoM16: 1 - acos((x1 * Element[icoL16, 1] + y1 * Element[icoL16, 2] + 1) / (xyz0 * sqrt(Element[icoL16, 1]^(2) + Element[icoL16, 2]^(2) + 1))) / 3.141592653589793
icoM17: 1 - acos((x1 * Element[icoL17, 1] + y1 * Element[icoL17, 2] + 1) / (xyz0 * sqrt(Element[icoL17, 1]^(2) + Element[icoL17, 2]^(2) + 1))) / 3.141592653589793
icoM18: 1 - acos((x1 * Element[icoL18, 1] + y1 * Element[icoL18, 2] + 1) / (xyz0 * sqrt(Element[icoL18, 1]^(2) + Element[icoL18, 2]^(2) + 1))) / 3.141592653589793
icoM19: 1 - acos((x1 * Element[icoL19, 1] + y1 * Element[icoL19, 2] + 1) / (xyz0 * sqrt(Element[icoL19, 1]^(2) + Element[icoL19, 2]^(2) + 1))) / 3.141592653589793
icoM20: 1 - acos((x1 * Element[icoL20, 1] + y1 * Element[icoL20, 2] + 1) / (xyz0 * sqrt(Element[icoL20, 1]^(2) + Element[icoL20, 2]^(2) + 1))) / 3.141592653589793
dodL1 = Join({{0, fi + 2, 3 * fi + 1}} * M1)
dodL12 = Join({{0, fi + 2, -(3 * fi + 1)}} * M1)
dodL2 = Join({{0, -(fi + 2), 3 * fi + 1}} * M1)
dodL11 = Join({{0, -(fi + 2), -(3 * fi + 1)}} * M1)
dodL9 = Join({{fi + 2, 3 * fi + 1, 0}} * M1)
dodL7 = Join({{fi + 2, -(3 * fi + 1), 0}} * M1)
dodL4 = Join({{-(fi + 2), 3 * fi + 1, 0}} * M1)
dodL6 = Join({{-(fi + 2), -(3 * fi + 1), 0}} * M1)
dodL8 = Join({{3 * fi + 1, 0, fi + 2}} * M1)
dodL10 = Join({{3 * fi + 1, 0, -(fi + 2)}} * M1)
dodL3 = Join({{-(3 * fi + 1), 0, fi + 2}} * M1)
dodL5 = Join({{-(3 * fi + 1), 0, -(fi + 2)}} * M1)
dodN1: 1 - acos((x1 * Element[dodL1, 1] + y1 * Element[dodL1, 2] + 1) / (xyz0 * sqrt(Element[dodL1, 1]^(2) + Element[dodL1, 2]^(2) + 1))) / 3.141592653589793
dodN2: 1 - acos((x1 * Element[dodL2, 1] + y1 * Element[dodL2, 2] + 1) / (xyz0 * sqrt(Element[dodL2, 1]^(2) + Element[dodL2, 2]^(2) + 1))) / 3.141592653589793
dodN3: 1 - acos((x1 * Element[dodL3, 1] + y1 * Element[dodL3, 2] + 1) / (xyz0 * sqrt(Element[dodL3, 1]^(2) + Element[dodL3, 2]^(2) + 1))) / 3.141592653589793
dodN4: 1 - acos((x1 * Element[dodL4, 1] + y1 * Element[dodL4, 2] + 1) / (xyz0 * sqrt(Element[dodL4, 1]^(2) + Element[dodL4, 2]^(2) + 1))) / 3.141592653589793
dodN5: 1 - acos((x1 * Element[dodL5, 1] + y1 * Element[dodL5, 2] + 1) / (xyz0 * sqrt(Element[dodL5, 1]^(2) + Element[dodL5, 2]^(2) + 1))) / 3.141592653589793
dodN6: 1 - acos((x1 * Element[dodL6, 1] + y1 * Element[dodL6, 2] + 1) / (xyz0 * sqrt(Element[dodL6, 1]^(2) + Element[dodL6, 2]^(2) + 1))) / 3.141592653589793
dodN7: 1 - acos((x1 * Element[dodL7, 1] + y1 * Element[dodL7, 2] + 1) / (xyz0 * sqrt(Element[dodL7, 1]^(2) + Element[dodL7, 2]^(2) + 1))) / 3.141592653589793
dodN8: 1 - acos((x1 * Element[dodL8, 1] + y1 * Element[dodL8, 2] + 1) / (xyz0 * sqrt(Element[dodL8, 1]^(2) + Element[dodL8, 2]^(2) + 1))) / 3.141592653589793
dodN9: 1 - acos((x1 * Element[dodL9, 1] + y1 * Element[dodL9, 2] + 1) / (xyz0 * sqrt(Element[dodL9, 1]^(2) + Element[dodL9, 2]^(2) + 1))) / 3.141592653589793
dodN10: 1 - acos((x1 * Element[dodL10, 1] + y1 * Element[dodL10, 2] + 1) / (xyz0 * sqrt(Element[dodL10, 1]^(2) + Element[dodL10, 2]^(2) + 1))) / 3.141592653589793
dodN11: 1 - acos((x1 * Element[dodL11, 1] + y1 * Element[dodL11, 2] + 1) / (xyz0 * sqrt(Element[dodL11, 1]^(2) + Element[dodL11, 2]^(2) + 1))) / 3.141592653589793
dodN12: 1 - acos((x1 * Element[dodL12, 1] + y1 * Element[dodL12, 2] + 1) / (xyz0 * sqrt(Element[dodL12, 1]^(2) + Element[dodL12, 2]^(2) + 1))) / 3.141592653589793
cuboL5 = Join({{-1, 0, 0}} * M1)
cuboL3 = Join({{0, 1, 0}} * M1)
cuboL6 = Join({{0, -1, 0}} * M1)
cuboL2 = Join({{0, 0, 1}} * M1)
cuboM1: 1 - acos((x1 * Element[cuboL1, 1] + y1 * Element[cuboL1, 2] + 1) / (xyz0 * sqrt(Element[cuboL1, 1]^(2) + Element[cuboL1, 2]^(2) + 1))) / 3.141592653589793
cuboL4 = Join({{0, 0, -1}} * M1)
cuboM2: 1 - acos((x1 * Element[cuboL2, 1] + y1 * Element[cuboL2, 2] + 1) / (xyz0 * sqrt(Element[cuboL2, 1]^(2) + Element[cuboL2, 2]^(2) + 1))) / 3.141592653589793
cuboM3: 1 - acos((x1 * Element[cuboL3, 1] + y1 * Element[cuboL3, 2] + 1) / (xyz0 * sqrt(Element[cuboL3, 1]^(2) + Element[cuboL3, 2]^(2) + 1))) / 3.141592653589793
cuboM4: 1 - acos((x1 * Element[cuboL4, 1] + y1 * Element[cuboL4, 2] + 1) / (xyz0 * sqrt(Element[cuboL4, 1]^(2) + Element[cuboL4, 2]^(2) + 1))) / 3.141592653589793
cuboM5: 1 - acos((x1 * Element[cuboL5, 1] + y1 * Element[cuboL5, 2] + 1) / (xyz0 * sqrt(Element[cuboL5, 1]^(2) + Element[cuboL5, 2]^(2) + 1))) / 3.141592653589793
cuboM6: 1 - acos((x1 * Element[cuboL6, 1] + y1 * Element[cuboL6, 2] + 1) / (xyz0 * sqrt(Element[cuboL6, 1]^(2) + Element[cuboL6, 2]^(2) + 1))) / 3.141592653589793
tetL1 = Join({{1, 1, 1}} * M1)
tetL2 = Join({{-1, 1, -1}} * M1)
tetL3 = Join({{-1, -1, 1}} * M1)
tetL4 = Join({{1, -1, -1}} * M1)
tetM1: 1 - acos((x1 * Element[tetL1, 1] + y1 * Element[tetL1, 2] + 1) / (xyz0 * sqrt(Element[tetL1, 1]^(2) + Element[tetL1, 2]^(2) + 1))) / 3.141592653589793
tetM2: 1 - acos((x1 * Element[tetL2, 1] + y1 * Element[tetL2, 2] + 1) / (xyz0 * sqrt(Element[tetL2, 1]^(2) + Element[tetL2, 2]^(2) + 1))) / 3.141592653589793
tetM3: 1 - acos((x1 * Element[tetL3, 1] + y1 * Element[tetL3, 2] + 1) / (xyz0 * sqrt(Element[tetL3, 1]^(2) + Element[tetL3, 2]^(2) + 1))) / 3.141592653589793
tetM4: 1 - acos((x1 * Element[tetL4, 1] + y1 * Element[tetL4, 2] + 1) / (xyz0 * sqrt(Element[tetL4, 1]^(2) + Element[tetL4, 2]^(2) + 1))) / 3.141592653589793
octL1 = Join({{1, 1, 1}} * M1)
octL5 = Join({{1, 1, -1}} * M1)
octL4 = Join({{1, -1, 1}} * M1)
octL8 = Join({{1, -1, -1}} * M1)
octL2 = Join({{-1, 1, 1}} * M1)
octL6 = Join({{-1, 1, -1}} * M1)
octL3 = Join({{-1, -1, 1}} * M1)
octL7 = Join({{-1, -1, -1}} * M1)
octM1: 1 - acos((x1 * Element[octL1, 1] + y1 * Element[octL1, 2] + 1) / (xyz0 * sqrt(Element[octL1, 1]^(2) + Element[octL1, 2]^(2) + 1))) / 3.141592653589793
octM2: 1 - acos((x1 * Element[octL2, 1] + y1 * Element[octL2, 2] + 1) / (xyz0 * sqrt(Element[octL2, 1]^(2) + Element[octL2, 2]^(2) + 1))) / 3.141592653589793
octM3: 1 - acos((x1 * Element[octL3, 1] + y1 * Element[octL3, 2] + 1) / (xyz0 * sqrt(Element[octL3, 1]^(2) + Element[octL3, 2]^(2) + 1))) / 3.141592653589793
octM4: 1 - acos((x1 * Element[octL4, 1] + y1 * Element[octL4, 2] + 1) / (xyz0 * sqrt(Element[octL4, 1]^(2) + Element[octL4, 2]^(2) + 1))) / 3.141592653589793
octM5: 1 - acos((x1 * Element[octL5, 1] + y1 * Element[octL5, 2] + 1) / (xyz0 * sqrt(Element[octL5, 1]^(2) + Element[octL5, 2]^(2) + 1))) / 3.141592653589793
octM6: 1 - acos((x1 * Element[octL6, 1] + y1 * Element[octL6, 2] + 1) / (xyz0 * sqrt(Element[octL6, 1]^(2) + Element[octL6, 2]^(2) + 1))) / 3.141592653589793
octM7: 1 - acos((x1 * Element[octL7, 1] + y1 * Element[octL7, 2] + 1) / (xyz0 * sqrt(Element[octL7, 1]^(2) + Element[octL7, 2]^(2) + 1))) / 3.141592653589793
octM8: 1 - acos((x1 * Element[octL8, 1] + y1 * Element[octL8, 2] + 1) / (xyz0 * sqrt(Element[octL8, 1]^(2) + Element[octL8, 2]^(2) + 1))) / 3.141592653589793
AristasDodecaedro: {Segment[V2, V14], Segment[V2, V11], Segment[V12, V2], Segment[V5, V12], Segment[V5, V15], Segment[V13, V5], Segment[V16, V13], Segment[V6, V13], Segment[V17, V6], Segment[V20, V6], Segment[V20, V1], Segment[V14, V15], Segment[V12, V20], Segment[V14, V3], Segment[V3, V9], Segment[V9, V7], Segment[V9, V19], Segment[V19, V8], Segment[V4, V19], Segment[V4, V18], Segment[V10, V3], Segment[V10, V4], Segment[V11, V10], Segment[V15, V7], Segment[V16, V7], Segment[V8, V16], Segment[V17, V8], Segment[V18, V17], Segment[V1, V18], Segment[V11, V1]}
AristasIcosaedro: {Segment[IcoV5, IcoV7], Segment[IcoV5, IcoV1], Segment[IcoV1, IcoV7], Segment[IcoV7, IcoV11], Segment[IcoV9, IcoV5], Segment[IcoV11, IcoV12], Segment[IcoV9, IcoV1], Segment[IcoV7, IcoV12], Segment[IcoV5, IcoV10], Segment[IcoV9, IcoV10], Segment[IcoV11, IcoV8], Segment[IcoV2, IcoV10], Segment[IcoV8, IcoV12], Segment[IcoV4, IcoV10], Segment[IcoV1, IcoV11], Segment[IcoV3, IcoV1], Segment[IcoV3, IcoV11], Segment[IcoV3, IcoV8], Segment[IcoV7, IcoV2], Segment[IcoV6, IcoV8], Segment[IcoV2, IcoV12], Segment[IcoV6, IcoV3], Segment[IcoV4, IcoV12], Segment[IcoV9, IcoV3], Segment[IcoV4, IcoV2], Segment[IcoV9, IcoV6], Segment[IcoV4, IcoV8], Segment[IcoV6, IcoV10], Segment[IcoV5, IcoV2], Segment[IcoV6, IcoV4]}
AristasCubo: {Segment[V2, V1], Segment[V3, V7], Segment[V5, V6], Segment[V7, V8], Segment[V2, V3], Segment[V3, V4], Segment[V4, V1], Segment[V1, V6], Segment[V8, V6], Segment[V4, V8], Segment[V2, V5], Segment[V5, V7]}
AristasOctaedro: {Segment[octV1, octV2], Segment[octV2, octV6], Segment[octV3, octV6], Segment[octV4, octV6], Segment[octV3, octV2], Segment[octV3, octV4], Segment[octV1, octV4], Segment[octV1, octV5], Segment[octV2, octV5], Segment[octV3, octV5], Segment[octV4, octV5], Segment[octV1, octV6]}
octA1 = Segment(octV1, octV2)
AristasTetraedro: {Segment[V1, V3], Segment[V1, V8], Segment[V3, V8], Segment[V3, V5], Segment[V1, V5], Segment[V8, V5]}
vp: -i - j - k
vp' = Vector(O, O + vp)
verVP = true
vpT = Textfield(vp)
lista1: {Polygon[(-10, 10), (-10, -30), (50, -30), (50, 10)]}