Plik pomocniczy do tworzenia rysunków 3D
Author: Jerzy Mil

Suwak zoom pozwala na skalowanie obrazu. Zmiana położenia punktu na czerwonym okręgu obraca układ do wektorów dookoła osi poziomej, a punktu na zielonym okręgu obraca dookoła osi pionowej. Dodatkowo w pliku utworzono narzędzie Odcinek3D pozwalające na szybkie rysowanie krawędzi wielościanów wypukłych.

zoom = 4.8 (slider from 0.1 to 10, step 0.1)
A_1 = (-15, 8)
B_1 = (-12, 8)
C_1 = (-15, 1)
D_1 = (-12, 1)
c = Circle(A_1, B_1)
d = Circle(C_1, D_1)
E_1 = Point(c)
a = Segment(A_1, B_1)
b = Segment(A_1, E_1)
α = Angle(B_1, A_1, E_1)
F_1 = Point(d)
e = Segment(C_1, D_1)
f = Segment(C_1, F_1)
β = Angle(D_1, C_1, F_1)
u: zoom * (cos(β), -sin(α) * sin(β))
v: zoom * (-sin(β), -sin(α) * cos(β))
w: zoom * (0, cos(α))
A: (0, 0) + v + 1.7321 * u - w
B: (0, 0) + v - 1.7321 * u - w
C: (0, 0) - 2 * v - w
W: (0, 0) + 0 * v + 0 * u + 2.5 * w
k, l = Odcinek3D(B, C, W, A)
m, n = Odcinek3D(W, C, A, B)
p, q = Odcinek3D(W, A, B, C)
i, j = Odcinek3D(B, A, C, W)
r, s = Odcinek3D(B, W, A, C)
g, h = Odcinek3D(C, A, W, B)
D = Midpoint(B, A)
t = Segment(C, D)
E = Midpoint(C, B)
a_1 = Segment(E, A)
I = Intersect(t, a_1)
b_1 = Segment(I, W)
c_1 = Segment(W, D)
wielokąt1, s_1, i_1, p_3 = Polygon(I, C, W)
wielokąt2, g_1, s_2, i_2 = Polygon(W, I, D)
wielokąt3, p_1, s_3, g_2 = Polygon(W, D, A)
J = (19.59893463596669, 7.785971316400032)
G = (-10.714803296020222, 9.879062745037224)
d_1 = Line(B, G)
H = (-10.606539946263124, 0.7849413654411507)
K = (19.454583502957227, 2.156277129031035)
e_1 = Line(H, K)
L = Intersect(e_1, d_1)
K' = Mirror(K, B)
B' = Mirror(B, L)
L' = Mirror(L, B')
f_1 = Line(L', W)
h_1 = Line(B', f_1)
j_1 = Line(L, h_1)
F = Intersect(h_1, r)
N = Intersect(j_1, r)
k_1 = Segment(D, E)
l_1 = Segment(E, F)
γ = Angle(F, E, D)
m_1 = Segment(F, D)

Tool: Odcinek3D
Input: H, J, G, I
Output: g, h

g = If((Angle[G, H, J] ≤ 180°) ∧ (Angle[H, J, G] ≤ 180°) ∧ (Angle[J, G, H] ≤ 180°) ∨ (Angle[H, I, J] ≤ 180°) ∧ (Angle[I, J, H] ≤ 180°) ∧ (Angle[J, H, I] ≤ 180°), Segment[H, J])
h = If(¬((Angle[G, H, J] ≤ 180°) ∧ (Angle[H, J, G] ≤ 180°) ∧ (Angle[J, G, H] ≤ 180°) ∨ (Angle[H, I, J] ≤ 180°) ∧ (Angle[I, J, H] ≤ 180°) ∧ (Angle[J, H, I] ≤ 180°)), Segment[H, J])