Plantilla 3D
Author: Rafael Losada Liste

Pirámide inclinada

LadosBase1 = 4 (slider from 3 to 10, step 1)
F = (-7.38, 6.4)
B = Point(yAxis)
s = Ray((0, 0), (1, 0))
A = Point(s)
r: x(A)
f = Segment(F, F - (0, 1))
Inclinación = Point(f)
O: (0.1, (-Distance[Inclinación, F]))
G = Punto3D((0, 0), A, O, {0, 0, y(B)})
lista1 = Sequence(Punto3D[(0, 0), A, O, {x((r; s)), y((r; s)), 0}], s, 1, 5)
e = Conic(Element[lista1, 1], Element[lista1, 2], Element[lista1, 3], Element[lista1, 4], Element[lista1, 5])
C = Point(e)
LadosBase: round(LadosBase1)
G10A = Punto3D((0, 0), C, O, {0, r, y(G)})
b = Line(G, G10A)
D = Point(b)
lista2 = Sequence((r; s), s, 0, 6.28319, (2 * 3.141592653589793 / LadosBase))
lista3 = Sequence(Punto3D[(0, 0), C, O, {x(Element[lista2, s]), y(Element[lista2, s]), 0}], s, 1, LadosBase)
lista4 = Sequence(Polygon[D, Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
E = Midpoint(Element[lista3, 1], Element[lista3, LadosBase])
d = false
a = Segment((0, 0), E)
lista6 = Sequence(Segment[(0, 0), Element[lista3, s]], s, 1, LadosBase)
h = Segment((0, 0), G)
ap = Segment(E, G)
polígono1: {Polygon[G, (0, 0), E]}
c = Segment(D, G)
lista5 = Sequence(Polygon[G, Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
g = Segment(G, B)
i = Segment(Element[lista3, LadosBase], Element[lista3, 1])
lista5R = Sequence(Polygon[G, Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
lista4R = Sequence(Polygon[D, Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
texto1: "LadosBase = " + LadosBase

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)
Z2 = Intersect(z0, z1, 2)
zElipse1 = Ellipse(Z1, Z2, 0.65)
Z5, Z6 = Intersect(zElipse1, z1)
z2 = OrthogonalLine(C, xAxis)
Z3 = Intersect(z0, z2, 2)
Z4 = Intersect(z0, z2, 1)
zElipse2 = Ellipse(Z3, Z4, 0.65)
Z7, Z8 = Intersect(zElipse2, z2)
zAngInc = Angle(Z8, C, Z)
zAngRot = Angle(Z6, C, XY)
A: {-1.4291628146049612E-15, -7.78, 0}
H': ((Element[A, 1] * sin(zAngRot)) + (Element[A, 2] * cos(zAngRot)), (((-Element[A, 1]) * cos(zAngRot)) * sin(zAngInc)) + ((Element[A, 2] * sin(zAngRot)) * sin(zAngInc)) + (Element[A, 3] * cos(zAngInc)))