Run it
Copy the script and paste it into your executor.
Modules = {
Colors = {
[] = ,
[] =
},
Services = {
RunService = :(),
CoreGui = :()
}
}
i = ,
()
Modules.ChangeColor = ()
Loop
Loop = Modules.Services.RunService.Heartbeat:(()
success, err = (()
_, label (Modules.Services.CoreGui:():())
label:()
label.RichText =
)
success
()
Loop:()
)
Modules.SpinningDonut = (watermark, color, )
=
Text = watermark .. (.(, ))
(Text)
donutLabel =
.()
_, label (Modules.Services.CoreGui:():())
label:() .(label.Text:(), Text:())
donutLabel = label
donutLabel
theta_spacing =
phi_spacing =
R1 =
R2 =
K2 =
K1 =
A, B = ,
output = {}
zbuffer = {}
i = ,
output[i] = {}
zbuffer[i] = {}
j = ,
output[i][j] =
zbuffer[i][j] =
theta = , * .pi, theta_spacing
costheta = .(theta)
sintheta = .(theta)
phi = , * .pi, phi_spacing
cosphi = .(phi)
sinphi = .(phi)
circlex = R2 + R1 * costheta
circley = R1 * sintheta
x = circlex * (.(B) * cosphi + .(A) * .(B) * sinphi) - circley * .(A) * .(B)
y = circlex * (.(B) * cosphi - .(A) * .(B) * sinphi) + circley * .(A) * .(B)
z = K2 + .(A) * circlex * sinphi + circley * .(A)
ooz = / z
xp = .( + K1 * ooz * x)
yp = .( - K1 * ooz * y)
xp >= xp <= yp >= yp <=
L = cosphi * costheta * .(B) - .(A) * costheta * sinphi - .(A) * sintheta + .(B) * (.(A) * sintheta - costheta * .(A) * sinphi)
L >
ooz > (zbuffer[xp][yp] )
zbuffer[xp][yp] = ooz
luminance_index = .(L * )
chars =
output[xp][yp] = chars:(luminance_index + , luminance_index + )
displayText =
j = ,
i = ,
displayText = displayText .. (output[i][j] )
displayText = displayText ..
donutLabel.Text = .(, Modules.Colors[color], displayText)
A = A +
B = B +
.()
Modules.()
Modules.(, , )Note: The math and logic behind originally came from here --> https://www.a1k0n.net/2011/07/20/donut-math.html --> I just converted it to be able to be used in the roblox console

Universal