Plantilla 3D
Author: Rafael Losada Liste

Prisma inclinado

PRISMA

Anti

Ladosbase1 = 5 (slider from 3 to 10, step 1)
F = (-8.98, 7.9)
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])
LadosBase: round(Ladosbase1)
C = Point(e)
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)
E = Midpoint(Element[lista3, 1], Element[lista3, LadosBase])
a = Segment((0, 0), E)
h = Segment((0, 0), G)
ap = Segment(E, G)
polígono1: {Polygon[G, (0, 0), E]}
g = Segment(G, B)
i = Segment(Element[lista3, LadosBase], Element[lista3, 1])
lista1b = Sequence(Punto3D[(0, 0), A, O, {x((r; s)), y((r; s)), y(B)}], s, 1, 5)
Retorcer = 0 (slider from 0 to 1, step 0.01)
lista2b = Sequence((r; s + (Retorcer * 3.141592653589793 / LadosBase)), s, 0, 6.28319, (2 * 3.141592653589793 / LadosBase))
lista3b = Sequence(Punto3D[(0, 0), C, O, {x(Element[lista2b, s]), y(Element[lista2b, s]), y(B)}], s, 1, LadosBase)
b1 = Segment(Element[lista3b, LadosBase], Element[lista3b, 1])
lista4 = Sequence(Polygon[Element[lista3, s + 1], Element[lista3, s], Element[lista3b, s]], s, 1, LadosBase - 1)
lista4b = Sequence(Polygon[Element[lista3b, s + 1], Element[lista3, s + 1], Element[lista3b, s]], s, 1, LadosBase - 1)
c = Segment(Element[lista3b, LadosBase], Element[lista3, 1])
lista5 = Sequence(Segment[Element[lista3b, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
lista7 = Sequence(Polygon[G, Element[lista3b, s], Element[lista3b, s + 1]], s, 1, LadosBase - 1)
lista7b = Sequence(Segment[Element[lista3b, s], Element[lista3b, s + 1]], s, 1, LadosBase - 1)
lista6 = Sequence(Polygon[(0, 0), Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
lista4c = Sequence(Polygon[Element[lista3b, s + 1], Element[lista3, s + 1], Element[lista3b, s]], s, 1, LadosBase - 1)
lista5b = Sequence(Segment[Element[lista3b, s], Element[lista3, s]], s, 1, LadosBase)
d = false
G10A = Punto3D((0, 0), C, O, {0, r, y(G)})
b = Line(G, G10A)
D = Point(b)
lista8 = Sequence(Translate[Element[lista3b, s], Vector[G, D]], s, 1, LadosBase)
lista8b = Sequence(Polygon[D, Element[lista8, s], Element[lista8, s + 1]], s, 1, LadosBase - 1)
lista8c = Sequence(Segment[Element[lista8, s], Element[lista8, s + 1]], s, 1, LadosBase - 1)
j = Segment(Element[lista8, LadosBase], Element[lista8, 1])
k = Segment(D, G)
lista9 = Sequence(Polygon[Element[lista3, s + 1], Element[lista3, s], Element[lista8, s]], s, 1, LadosBase - 1)
lista9b = Sequence(Polygon[Element[lista8, s + 1], Element[lista3, s + 1], Element[lista8, s]], s, 1, LadosBase - 1)
lista9c = Sequence(Polygon[Element[lista8, s + 1], Element[lista3, s + 1], Element[lista8, s]], s, 1, LadosBase - 1)
lista10 = Sequence(Segment[Element[lista8, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
lista10b = Sequence(Segment[Element[lista8, s], Element[lista3, s]], s, 1, LadosBase)
H = (-8.5, 4.46)
texto3 = If(Retorcer > 0, "Antiprisma inclinado", "Prisma inclinado")
lista4R = Sequence(Polygon[Element[lista3, s + 1], Element[lista3, s], Element[lista3b, s]], s, 1, LadosBase - 1)
lista4cR = Sequence(Polygon[Element[lista3b, s + 1], Element[lista3, s + 1], Element[lista3b, s]], s, 1, LadosBase - 1)
lista6R = Sequence(Polygon[(0, 0), Element[lista3, s], Element[lista3, s + 1]], s, 1, LadosBase - 1)
lista7R = Sequence(Polygon[G, Element[lista3b, s], Element[lista3b, s + 1]], s, 1, LadosBase - 1)
texto4: "Lados base: " + 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.5945276909747277, -4.907451624082993, 6.0600000000000005}
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)))