Plantilla 3D
Author: Rafael Losada Liste

Desarrolla

C = (-8.8, 6.22)
zz1 = OrthogonalLine(C, yAxis)
zz0 = Circle(C, 0.62)
ZZ1 = Intersect(zz0, zz1, 1.0)
ZZ2 = Intersect(zz0, zz1, 2.0)
zElipse1 = Ellipse(ZZ1, ZZ2, 0.65)
XY = Point(zElipse1)
zz2 = OrthogonalLine(C, xAxis)
ZZ3 = Intersect(zz0, zz2, 2.0)
ZZ4 = Intersect(zz0, zz2, 1.0)
zElipse2 = Ellipse(ZZ3, ZZ4, 0.65)
Z = Point(zElipse2)
escala = 2.1 (slider from 1.9 to 3.4, step 0.01)
t = 0 (slider from 0 to 2, step 0.01)
yG0: escala * sqrt(4.0 - t^(2.0))
xG0: escala * t
n: sqrt(xG0^(2.0) + yG0^(2.0)) / escala
yG2: escala * (-1.0 + sqrt(2.0 - (1.0 - t)^(2.0)))
G000 = Punto3D(C, XY, Z, {-(escala), -(escala), -(escala)})
G100 = Punto3D(C, XY, Z, {escala, -(escala), -(escala)})
A1: G100
r = AffineRatio(G000, G100, A1)
ZZ5, ZZ6 = Intersect(zElipse1, zz1)
zPunto1 = Intersect(zElipse2, zElipse1, 1.0)
zPunto2 = Intersect(zElipse2, zElipse1, 4.0)
zSeg2 = Segment(zPunto1, zPunto2)
ZZ7, ZZ8 = Intersect(zElipse2, zz2)
zz3 = Segment(ZZ7, ZZ8)
zz4 = Segment(ZZ5, ZZ6)
a1 = Segment(G100, G000)
a: 2.0 * escala
G010 = Punto3D(C, XY, Z, {-(escala), escala, -(escala)})
G001 = Punto3D(C, XY, Z, {-(escala), -(escala), escala})
G110 = Punto3D(C, XY, Z, {escala, escala, -(escala)})
G101 = Punto3D(C, XY, Z, {escala, -(escala), escala})
G011 = Punto3D(C, XY, Z, {-(escala), escala, escala})
G111 = Punto3D(C, XY, Z, {escala, escala, escala})
A2: G010
A7: G100 + G010 - G000
b: 10.0 * AffineRatio[G000, G100, A1]
b': round(100.0 * b) / 100.0
x0: escala * r * t
y0: escala * r * sqrt(4.0 - t^(2.0))
A4a = Punto3D(C, XY, Z, {-(escala) + 2.0 * escala * r + x0, -(escala), -(escala) + y0})
A8a = Punto3D(C, XY, Z, {-(escala) + 2.0 * escala * r + x0, -(escala) + 2.0 * escala * r, -(escala) + y0})
A3a = Punto3D(C, XY, Z, {-(escala) - x0, -(escala), -(escala) + y0})
A5a = Punto3D(C, XY, Z, {-(escala) - x0, -(escala) + 2.0 * escala * r, -(escala) + y0})
A3b = Punto3D(C, XY, Z, {-(escala), -(escala) - x0, -(escala) + y0})
A4b = Punto3D(C, XY, Z, {-(escala) + 2.0 * escala * r, -(escala) - x0, -(escala) + y0})
A8b = Punto3D(C, XY, Z, {-(escala) + 2.0 * escala * r, -(escala) + 2.0 * escala * r + x0, -(escala) + y0})
A5b = Punto3D(C, XY, Z, {-(escala), -(escala) + 2.0 * escala + x0, -(escala) + y0})
x1: 2.0 * escala * r * t
y1: escala * r * sqrt(8.0 * t - 4.0 * t^(2.0))
A4c = Punto3D(C, XY, Z, {-(escala) + 2.0 * escala * r, -(escala) + x0 + x1, -(escala) + y0 + y1})
A3c = Punto3D(C, XY, Z, {-(escala), -(escala) + x0 + x1, -(escala) + y0 + y1})
polígono4: {Polygon[G000, A3b, A4b, A1]}
polígono5: {Polygon[A1, A4a, A8a, A7]}
pir55: {Polygon[A7, A8b, A5b, A2]}
pir65: {Polygon[A8b, A4c, A3c, A5b]}
pir15: {Polygon[A1, A7, A2, G000]}
polígono9: {Polygon[A2, A5a, A3a, G000]}
c = OrthogonalLine(A, yAxis)
xG1: 2.0 * escala * t
yG1: escala * sqrt(8.0 * t - 4.0 * t^(2.0))
A3Ga = Punto3D(C, XY, Z, {-(escala) - xG0, -(escala), -(escala) + yG0})
A3Gb = Punto3D(C, XY, Z, {-(escala), -(escala) - xG0, -(escala) + yG0})
A3Gc = Punto3D(C, XY, Z, {-(escala), -(escala) + xG0 + xG1, -(escala) + yG0 + yG1})
A4Ga = Punto3D(C, XY, Z, {escala + xG0, -(escala), -(escala) + yG0})
A4Gb = Punto3D(C, XY, Z, {escala, -(escala) - xG0, -(escala) + yG0})
A4Gc = Punto3D(C, XY, Z, {escala, -(escala) + xG0 + xG1, -(escala) + yG0 + yG1})
A5Ga = Punto3D(C, XY, Z, {-(escala) - xG0, escala, -(escala) + yG0})
A5Gb = Punto3D(C, XY, Z, {-(escala), escala + xG0, -(escala) + yG0})
A8Ga = Punto3D(C, XY, Z, {escala + xG0, escala, -(escala) + yG0})
A8Gb = Punto3D(C, XY, Z, {escala, escala + xG0, -(escala) + yG0})
g = Segment(A2, A5a)
h = Segment(A7, A8a)
i = Segment(A2, A5b)
j = Segment(A5a, A3a)
k = Segment(A7, A8b)
l = Segment(A8b, A4c)
m = Segment(A4c, A3c)
p = Segment(A4a, A1)
q = Segment(A4b, A1)
s = Segment(A3b, A4b)
texto1: "Escala = " + (escala - 0.9)
a_1 = Segment(A2, A7)
b_1 = Segment(A7, A1)
g_1 = Segment(A2, G000)
h_1 = Segment(G000, A1)
C3 = Punto3D(C, XY, Z, {0.0, -(escala) + yG0 / n - xG0 / 2.0, -(escala) + yG0 / 2.0 + xG0 / n})
H = Punto3D(C, XY, Z, {0.0, 0.0, 0.0})
polígono12: {Polygon[A3Gb, C3, A4Gb]}
polígono13: {Polygon[A4Gb, A1, C3]}
polígono14: {Polygon[A1, G000, C3]}
polígono15: {Polygon[A3Gb, G000, C3]}
m_1 = Segment(G000, C3)
n_1 = Segment(C3, A3Gb)
p_1 = Segment(G000, A3Gb)
s_1 = Segment(C3, A1)
t_1 = Segment(C3, A4Gb)
C3lista: {0.0, -(escala) + yG0 / n - xG0 / 2.0, -(escala) + yG0 / 2.0 + xG0 / n}
C3m = Punto3D(C, XY, Z, {0.0, 0.0, -(escala) + yG0 / 2.0 + xG0 / n})
C3' = Mirror(C3, C3m)
pir51: {Polygon[A7, C3', A8Gb]}
pir52: {Polygon[A8Gb, C3', A5Gb]}
pir53: {Polygon[A7, A2, C3']}
pir54: {Polygon[A5Gb, A2, C3']}
a_2 = Segment(A7, C3')
b_2 = Segment(A2, C3')
c_2 = Segment(C3', A8Gb)
d_2 = Segment(C3', A5Gb)
e_2 = Segment(A8Gb, A5Gb)
C2 = Punto3D(C, XY, Z, {-(escala) + yG0 / n - xG0 / 2.0, 0.0, -(escala) + yG0 / 2.0 + xG0 / n})
polígono20: {Polygon[G000, C2, A3Ga]}
polígono21: {Polygon[A5Ga, C2, A3Ga]}
polígono22: {Polygon[A2, C2, G000]}
polígono23: {Polygon[A2, A5Ga, C2]}
f_2 = Segment(A2, C2)
g_2 = Segment(C2, A5Ga)
h_2 = Segment(A3Ga, G000)
i_2 = Segment(G000, C2)
j_2 = Segment(C2, A3Ga)
C2' = Mirror(C2, C3m)
polígono24: {Polygon[A7, C2', A8Ga]}
polígono25: {Polygon[A4Ga, C2', A8Ga]}
polígono26: {Polygon[A1, A7, C2']}
polígono27: {Polygon[A1, A4Ga, C2']}
k_2 = Segment(A7, C2')
l_2 = Segment(C2', A1)
m_2 = Segment(C2', A4Ga)
n_2 = Segment(C2', A8Ga)
p_2 = Segment(A5Gb, A3Gc)
nn: sqrt((2.0 * escala - xG1)^(2.0) + yG1^(2.0)) / escala
C5 = Punto3D(C, XY, Z, {0.0, -(yG1) / nn + xG0 + xG1 / 2.0, -(escala) + yG0 + yG1 / 2.0 - (2.0 * escala - xG1) / nn})
pir61: {Polygon[A5Gb, C5, A3Gc]}
pir62: {Polygon[A8Gb, C5, A5Gb]}
pir63: {Polygon[A4Gc, A3Gc, C5]}
pir64: {Polygon[A8Gb, A4Gc, C5]}
q_2 = Segment(A5Gb, C5)
r_2 = Segment(A8Gb, C5)
s_2 = Segment(C5, A4Gc)
t_2 = Segment(C5, A3Gc)
pir11: {Polygon[A1, H, G000]}
pir12: {Polygon[G000, A2, H]}
pir13: {Polygon[A2, A7, H]}
pir14: {Polygon[A1, H, A7]}
a_3 = Segment(A1, H)
b_3 = Segment(H, A7)
c_3 = Segment(H, A2)
d_3 = Segment(H, G000)
d = Segment(A4Ga, A8Ga)

Tool: Punto3D
[C,XY,Z,Lista 3D]
Input: C, XY, Z, A
Output: H'

z1 = OrthogonalLine(C, yAxis)
z0 = Circle(C, 0.62)
Z1 = Intersect(z0, z1, 1.0)
Z2 = Intersect(z0, z1, 2.0)
zElipse1 = Ellipse(Z1, Z2, 0.65)
Z5, Z6 = Intersect(zElipse1, z1)
z2 = OrthogonalLine(C, xAxis)
Z3 = Intersect(z0, z2, 2.0)
Z4 = Intersect(z0, z2, 1.0)
zElipse2 = Ellipse(Z3, Z4, 0.65)
Z7, Z8 = Intersect(zElipse2, z2)
zAngInc = Angle(Z8, C, Z)
zAngRot = Angle(Z6, C, XY)
A: {0.0, 0.0, 0.0}
H': (Element[A, 1.0] * sin(zAngRot) + Element[A, 2.0] * cos(zAngRot), -(Element[A, 1.0]) * cos(zAngRot) * sin(zAngInc) + Element[A, 2.0] * sin(zAngRot) * sin(zAngInc) + Element[A, 3.0] * cos(zAngInc))