Re: Code Doodles!
Posted: Sun Jul 19, 2015 1:24 pm
There's a "maths" missing I fear
Apparently some Intel video drivers give back the Microsoft OpenGL 1.1 software renderer when an OpenGL context with 16x MSAA is requested.Garmelon wrote:The same thing happens on my school's computers (kinda old ) too - When I reduce the samples to 0 it works.
Fixed in the original post, just download it againNixola wrote:There's a "maths" missing I fear
Code: Select all
function love.load()
pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198"
piMin, piMax = 1, string.len(pi)-2
love.window.setTitle("A study of Pi")
font1 = love.graphics.newFont(12)
font2 = love.graphics.newFont(8)
love.graphics.setFont(font1)
love.window.setMode(400, 300)
love.graphics.setLineWidth(2)
keyHold = {t = 0, rt = 0, mt = 1, mrt = .02}
counter = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0}
piDigits = 1
end
function love.update(dt)
local down = love.keyboard.isDown
local rp = 0
if down("up") or down("=") or down("kp+") or down("right") then
rp = 1
elseif down("down") or down("-") or down("kp-") or down("left") then
rp = -1
else
keyHold.t = 0
keyHold.rt = 0
end
if rp ~= 0 then
keyHold.t = math.min(keyHold.t + dt, keyHold.mt)
if keyHold.t == keyHold.mt then
keyHold.rt = keyHold.rt+dt
if keyHold.rt >= keyHold.mrt then
keyHold.rt = 0
piDigits = math.min(piMax, math.max(piMin, piDigits+rp))
updatePi()
end
end
end
end
function love.draw()
love.graphics.setFont(font1)
local font = love.graphics.getFont()
love.graphics.setColor(255, 255, 255, 255)
love.graphics.print("Digits: " .. piDigits, 3, 3)
local more, less = 1, 1
for i, v in ipairs(counter) do
if v/piDigits <= counter[less]/piDigits then
less = i
end
if v/piDigits >= counter[more]/piDigits then
more = i
end
end
love.graphics.setColor(255, 255, 255, 55)
for i = 1, 10 do
love.graphics.rectangle("fill", 5, 100+(i-1)*5, 400-10, 1)
end
local t = {}
for i = 1, #counter+2 do
local l = i-1
local n = 0
if l >= 1 and l <= #counter then
n = counter[l]/counter[more]
end
table.insert(t, n)
end
for i = 2, #t do
local x1, x2 = math.max(5, (i-2)*(400/11)), math.min(400-5, (i-1)*(400/11))
local y1, y2 = (100+9*5) - t[i-1]*(9*5), (100+9*5) - t[i]*(9*5)
if i < #t then
love.graphics.setColor(255, 255, 255, 55)
love.graphics.setLineWidth(2)
if i-1 == more then
love.graphics.setColor(155, 155, 255, 105)
love.graphics.setLineWidth(4)
elseif i-1 == less then
love.graphics.setColor(255, 155, 155, 105)
love.graphics.setLineWidth(4)
end
love.graphics.line(x2, y2, x2, 100+9*5)
end
love.graphics.setLineWidth(2)
love.graphics.setColor(0, 105, 255, 255)
love.graphics.line(x1, y1, x2, y2)
end
love.graphics.setLineWidth(2)
for i, v in ipairs(counter) do
love.graphics.setColor(255, 255, 255, 255)
local x = (400/11)*i
love.graphics.print(i-1, x-font:getWidth(i-1)/2, 20)
love.graphics.setColor(255, 255, 255, 255)
if i == less then
love.graphics.setColor(255, 155, 155, 255)
elseif i == more then
love.graphics.setColor(155, 155, 255, 255)
end
love.graphics.rectangle("line", x-5, 40, 10, 50)
love.graphics.setColor(0, 255, 0, 255)
love.graphics.rectangle("fill", x-4, 40+50-48*(v/piDigits), 8, 48*(v/piDigits))
end
love.graphics.setFont(font2)
local font = love.graphics.getFont()
local t = {""}
for i = 1, string.len(pi) do
local s = string.sub(pi, i, i)
if font:getWidth(t[#t] .. s) >= 400-10 then
table.insert(t, "")
end
t[#t] = t[#t] .. s
end
local w = 0
for i, v in ipairs(t) do
if string.len(v)+w >= piDigits+2 and w < piDigits+2 then
local s = {"", ""}
s[1] = string.sub(v, 1, piDigits+2-w)
s[2] = string.sub(v, piDigits+3-w, -1)
love.graphics.setColor(255, 205, 0, 255)
love.graphics.print(s[1], 5, 300-5-(#t*10)+(i-1)*10)
love.graphics.setColor(255, 205, 0, 105)
love.graphics.print(s[2], 5+font:getWidth(s[1]), 300-5-(#t*10)+(i-1)*10)
else
love.graphics.setColor(255, 205, 0, 255)
if string.len(v)+w >= piDigits+2 then
love.graphics.setColor(255, 205, 0, 105)
end
love.graphics.print(v, 5, 300-5-(#t*10)+(i-1)*10)
end
w = w + string.len(v)
end
end
function love.keypressed(key)
if key == "up" or key == "=" or key == "kp+" or key == "right" then
piDigits = math.min(piMax, piDigits+1)
updatePi()
elseif key == "down" or key == "-" or key == "kp-" or key == "left" then
piDigits = math.max(piMin, piDigits-1)
updatePi()
end
end
function love.mousepressed(x, y, button)
if button == "wu" then
piDigits = math.min(piMax, piDigits+1)
updatePi()
elseif button == "wd" then
piDigits = math.max(piMin, piDigits-1)
updatePi()
end
end
function updatePi()
counter = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
for i = 3, 2+piDigits do
local d = tonumber(string.sub(pi, i, i))
counter[d+1] = counter[d+1] + 1
end
end
Sorry for the nit-picking, but this reasoning is not correct. You can make a transcendental number consisting only of the digits 0 and 1. Therefore not every possible number sequence appears in every transcendental number.undef wrote:Ah, nice idea.
Although I can tell you that pi is a transcendental number.
That means that every possible number sequence can be found in the post comma digits of pi, and therefore the numbers are evenly distributed.
There are an infinite number of digits, so every number will appear an infinite amount of times, so yeah, that should be true.micha wrote:The statements (1) that every possible number can be found inside pi and (2) that the digits are evenly distributed in pi might still be true. I am not sure about that.
I know this is very off-topic, but this reasoning is again incorrect. We maybe know the first millions of digits of pi and we can see that all observed digits are approximately uniformly distributed. That is strong evidence but no proof that this pattern will continue indefinitely.DaedalusYoung wrote:There are an infinite number of digits, so every number will appear an infinite amount of times, so yeah, that should be true.
Oops sorry, my bad, I was wrong.micha wrote:Sorry for the nit-picking, but this reasoning is not correct. You can make a transcendental number consisting only of the digits 0 and 1. Therefore not every possible number sequence appears in every transcendental number.undef wrote:snip.
The statements (1) that every possible number can be found inside pi and (2) that the digits are evenly distributed in pi might still be true. I am not sure about that.