0,]']±>Sï}WÿÍu§ðp8·d%qy)6o;]ÉA¦ösï÷ôôô”°ÂVl†3 1 and t < 10 then if total > 16 then cls() end elseif (t > 10 and t < 18.2) or t > 19 then cls() else clear_screen() if t >= 1 - 1/60 then d = 1 end end if t > 1 and t < 18.21 then if t < 11then play_music(0) else play_music(1) end draw_points() draw_lines() draw_cardioid() draw_cube() if t > 11 then set_c() end theta = theta % (2 * math.pi) + math.rad(360 / total_max / 2) end if t > 20 then play_music(2) if math.floor(t * math.pi) % 2 == 0 then bsod(0) else bsod(1) end end end function m_mul(m1, m2) if #m1[1] ~= #m2 then return nil end local res = {} for i = 1, #m1 do res[i] = {} for j = 1, #m2[1] do res[i][j] = 0 for k = 1, #m2 do res[i][j] = res[i][j] + m1[i][k] * m2[k][j] end end end return res end function rt_x(m, theta) local R = { {1, 0, 0}, {0, math.cos(theta), -math.sin(theta)}, {0, math.sin(theta), math.cos(theta)} } return m_mul(m, R) end function rt_y(m, theta) local R = { {math.cos(theta), 0, math.sin(theta)}, {0, 1, 0}, {-math.sin(theta), 0, math.cos(theta)} } return m_mul(m, R) end function rt_z(m, theta) local R = { {math.cos(theta), -math.sin(theta), 0}, {math.sin(theta), math.cos(theta), 0}, {0, 0, 1} } return m_mul(m, R) end function connect(m, a, b, x, y) line(x + m[a][1], y + m[a][2], x + m[b][1], y + m[b][2], c[c_i]) end function play_music(track) if not played[track] then music(track) played[track] = true end end function clear_screen() local p = {} if d < X then d = d + 2 end for i = 0, Y do if i % 2 == 0 then p[i] = d line(p[i], i, 0, i, c[c_i]) else p[i] = X - d line(X - 1, i, p[i], i, c[c_i]) end end end function draw_cube() local p = { {a/2, a/2, a/2}, {-a/2, a/2, a/2}, {-a/2, -a/2, a/2}, {a/2, -a/2, a/2}, {a/2, a/2, -a/2}, {-a/2, a/2, -a/2}, {-a/2, -a/2, -a/2}, {a/2, -a/2, -a/2} } local rt = {} local x = X/2 local y = Y/2 rt = rt_x(p, theta) if a < a_max then a = a * 1.01 end if theta <= 0.5 and r >= Y/2 - 1 then O = true end if r >= Y/2 - 1 and O then rt = rt_z(rt, theta) if t > 8 then rt = rt_y(rt, theta) a = a_max * math.sin(theta/2) end end for i = 1, 4 do connect(rt, i, i % 4 + 1, x, y) connect(rt, i, i + 4, x, y) end connect(rt, 5, 6, x, y) connect(rt, 6, 7, x, y) connect(rt, 7, 8, x, y) connect(rt, 8, 5, x, y) end function draw_cardioid() local angle = 2 * math.pi/total local p = {} local rt = {} for i = 1, total do p[i] = {} rt[i] = {} p[i][1] = r * math.cos(angle + math.pi) p[i][2] = r * math.sin(angle + math.pi) p[i][3] = 0 angle = i * 2 * math.pi/total end rt = rt_z(p, theta) circb(X/2, Y/2, r, c[c_i]) if r < Y/2 - 1 and a > a_max then r = r * 1.01 else if total <= 2 then circb(X/2, Y/2, r + 8, c[c_i]) end for i = 1, total do line(X/2 + rt[i][1], Y/2 + rt[i][2], X/2 + rt[factor * i % total + 1][1], Y/2 + rt[factor * i % total + 1][2], c[c_i]) end end total = total % total_max + total_delta end function draw_lines() local p = { {X/2, a * 2/3, 0}, {-X/2, a * 2/3, 0}, {X/2, -a * 2/3, 0}, {-X/2, -a * 2/3, 0} } local rt = {} rt = rt_z(p, theta) if t > 8 then rt = rt_x(rt, theta) rt = rt_y(rt, theta) end connect(rt, 1, 2, X/2, Y/2) connect(rt, 3, 4, X/2, Y/2) end function draw_points() local p = {} local rt = {} for d = 1, 360/20 do for i = 1, X/20 do p[i] = {} p[i][1] = i * 20 p[i][2] = d * theta * math.sin(theta) p[i][3] = 0 rt = rt_y(p, theta) rt = rt_z(rt, theta + d) connect(rt, i, i, X/2, Y/2) end end end function set_c() if total == total_max then c_i = c_i % 10 + 1 if t > 13 then factor = factor % factor_max - 1 else factor = 2 end end end function bsod(i) print("Software Failure. Press enter to recover!", 7, 23, 2) print("Guru Meditation #00000002.0000AAC0", 20, 36, 2) if i == 0 then rectb(0, 16, X, Y/4, 2) end end