readme
This commit is contained in:
parent
79e8c523d9
commit
424e8a9129
9
main.lua
9
main.lua
|
@ -1,7 +1,7 @@
|
||||||
local enumerations = require 'enumerations'
|
local enumerations = require 'enumerations'
|
||||||
local twintree = require 'twintree'
|
local twintree = require 'twintree'
|
||||||
local step = coroutine.wrap( twintree.buildIncremental )
|
local step = coroutine.wrap( twintree.buildIncremental )
|
||||||
local a = enumerations.NadFFI( 2 )
|
local a = enumerations.Dyad()
|
||||||
local b = enumerations.SternBrocot()
|
local b = enumerations.SternBrocot()
|
||||||
step( a, b )
|
step( a, b )
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ end
|
||||||
|
|
||||||
local function paint()
|
local function paint()
|
||||||
if not pointList then return end
|
if not pointList then return end
|
||||||
|
numMapped = #pointList / 2
|
||||||
local type = type
|
local type = type
|
||||||
--Make sure the whole point list consists of numbers!
|
--Make sure the whole point list consists of numbers!
|
||||||
--We use the __call metamethod in non-number elements to coerce to numbers.
|
--We use the __call metamethod in non-number elements to coerce to numbers.
|
||||||
|
@ -87,6 +88,7 @@ function love.update( dt )
|
||||||
if love.keyboard.isScancodeDown "s" then repaint = true; cy = cy - dt * 0.1 / math.sqrt( zoomFactor ) end
|
if love.keyboard.isScancodeDown "s" then repaint = true; cy = cy - dt * 0.1 / math.sqrt( zoomFactor ) end
|
||||||
if love.keyboard.isScancodeDown "q" then repaint = true; zoom( 1 + dt ) end
|
if love.keyboard.isScancodeDown "q" then repaint = true; zoom( 1 + dt ) end
|
||||||
if love.keyboard.isScancodeDown "e" then repaint = true; zoom( 1 - dt ) end
|
if love.keyboard.isScancodeDown "e" then repaint = true; zoom( 1 - dt ) end
|
||||||
|
if love.keyboard.isScancodeDown "space" then repaint = true; pointList = twintree.flat( twintree.build( 10000, a, b ) ) end
|
||||||
if repaint then return paint() end
|
if repaint then return paint() end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -95,9 +97,8 @@ function love.keypressed( key, code, isrepeat)
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.load()
|
function love.load()
|
||||||
--pointList = twintree.flat( twintree.build( 10000, a, b ) )
|
pointList = twintree.flat( twintree.build( 10000, a, b ) )
|
||||||
--numMapped = #pointList / 2
|
numMapped = #pointList / 2
|
||||||
new()
|
|
||||||
love.graphics.setPointSize( 3 )
|
love.graphics.setPointSize( 3 )
|
||||||
love.graphics.setLineWidth( 0.005 )
|
love.graphics.setLineWidth( 0.005 )
|
||||||
paint()
|
paint()
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
This is a little LOVE script for plotting correspondences between dense countable ordered sets.
|
||||||
|
To use: download LOVE2D, then run LOVE in the directory where this repo is saved.
|
||||||
|
|
||||||
|
Any two countable dense total orders are order isomorphic.
|
||||||
|
Using only this structure it is possible to explicitly construct an increasing bijection between these two orders.
|
||||||
|
|
||||||
|
This implements the standard procedure for doing this in general, the "back-and-forth" method.
|
||||||
|
Pass a function that generates an infinite sequence to the enumerator wrapper ( require 'enumeration' ),
|
||||||
|
then pass the resulting enumerators to twintree.build ( require 'twintree' ).
|
||||||
|
|
||||||
|
twintree.build takes a number as its first argument, and the pair of enumerators as its following two arguments.
|
||||||
|
This number is the number of pairs of points in the support of the function (i.e., it's a partial function, only some large but finite number of points will be computed and plotted. The rest will be displayed by linear interpolation.).
|
||||||
|
|
||||||
|
twintree.build returns two values, each is a binary tree.
|
||||||
|
twintree.flat does a simultaneous inorder traversal of both trees, then interlaces the entries in a large, reused, 1-indexed Lua table that can be passed to love.graphics.line. Supposing the trees are traversed like { x_1, x_2, x_3, ... x_n } and { y_1, y_2, y_3, ..., y_n }, then the resulting table will be { x_1, y_1, x_2, y_2, x_3, y_3, ..., y_n }.
|
Loading…
Reference in New Issue