From 472e81a2b713e6149af4e56e4046c1aa6a9c1812 Mon Sep 17 00:00:00 2001 From: Dante Catalfamo Date: Fri, 3 Jul 2020 14:43:05 -0400 Subject: Add braille --- braille.js | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 38 ++++++++++++++++++++-------------- lambda.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script.js | 70 -------------------------------------------------------------- 4 files changed, 159 insertions(+), 86 deletions(-) create mode 100644 braille.js create mode 100644 lambda.js delete mode 100644 script.js diff --git a/braille.js b/braille.js new file mode 100644 index 0000000..8d94db7 --- /dev/null +++ b/braille.js @@ -0,0 +1,67 @@ +"use strict"; + +const OUTHEIGHT = 20; +const OUTWIDTH = 2 * OUTHEIGHT; +const HEIGHT = 3 * OUTHEIGHT; +const WIDTH = 2 * OUTWIDTH; +const BRAILLE = [ + "⠀", "⠁", "⠂", "⠃", "⠄", "⠅", "⠆", "⠇", "⠈", "⠉", "⠊", "⠋", "⠌", "⠍", "⠎", "⠏", + "⠐", "⠑", "⠒", "⠓", "⠔", "⠕", "⠖", "⠗", "⠘", "⠙", "⠚", "⠛", "⠜", "⠝", "⠞", "⠟", + "⠠", "⠡", "⠢", "⠣", "⠤", "⠥", "⠦", "⠧", "⠨", "⠩", "⠪", "⠫", "⠬", "⠭", "⠮", "⠯", + "⠰", "⠱", "⠲", "⠳", "⠴", "⠵", "⠶", "⠷", "⠸", "⠹", "⠺", "⠻", "⠼", "⠽", "⠾", "⠿", +]; + +let board = new Array(HEIGHT); +for (let i = 0; i < HEIGHT; i++) { + board[i] = new Array(WIDTH); +} + +function render(board) { + const out = new Array(OUTHEIGHT); + for (let i = 0; i < OUTHEIGHT; i++) { + out[i] = new Array(OUTWIDTH); + } + for (let y = 0; y < HEIGHT; y += 3) { + for (let x = 0; x < WIDTH; x += 2) { + let outx = x/2; + let outy = y/3; + let tl = board[y][x] ? 1 : 0; + let ml = board[y+1][x] ? 1 : 0; + let bl = board[y+2][x] ? 1 : 0; + let tr = board[y][x+1] ? 1 : 0; + let mr = board[y+1][x+1] ? 1 : 0; + let br = board[y+2][x+1] ? 1 : 0; + let idx = tl*1 + ml*2 + bl*4 + tr*8 + mr*16 + br*32; + let char = BRAILLE[idx]; + out[outy][outx] = char; + } + } + return out.reduce((a, r) => a + r.reduce((a2, c) => a2 + c) + "\n", ""); +} + +function renderFunction(board, fun, frame) { + for (let y = 0; y < HEIGHT; y++) { + for (let x = 0; x < WIDTH; x++) { + board[y][x] = fun(x, y, frame) ? true : null; + } + } + return render(board); +} + +function fun(x, y, frame) { + const l = HEIGHT / 3; + const m1 = Math.abs(y+frame) % l; + const m2 = Math.abs(y-frame) % l; + return x == m1 || + x == m2 || + x/2 == m1 + l/2 || + x/2 == m2 + l/2 || + x == m1 + 3*l || + x == m2 + 3*l; +} + +const br = document.getElementById("braille"); +let frame = HEIGHT; +const interval = setInterval(() => { + br.innerHTML = renderFunction(board, fun, frame++); +}, 50); diff --git a/index.html b/index.html index 5dce83d..a995095 100644 --- a/index.html +++ b/index.html @@ -7,34 +7,38 @@ lambda.cx home @@ -42,12 +46,14 @@

       
     
- + + diff --git a/lambda.js b/lambda.js new file mode 100644 index 0000000..85037c3 --- /dev/null +++ b/lambda.js @@ -0,0 +1,70 @@ +function coss(height, width, theta) { + let amplitude = height/2; + let period = width; + let dx = Math.PI/width; + let yVal = []; + let x = theta; + + for(let i=0;iλ"; + } else if ((x < halfWidth) && (Math.abs(negy-y) < thick)) { + out += "λ"; + } else { + out += " "; + } + } + out += "\n"; + } + return out; +} + +function putlam(el, height, width, min, max, period) { + let amp = max-min; + const f = function() { + let percent = (Math.sin(((new Date).getTime()/period)) + 1) / 2; + let thick = (amp * percent) + min; + el.innerHTML = lamby(height, width, thick); + }; + window.setInterval(f, 100); +} + +let lamEl = document.querySelector('.lambda'); +putlam(lamEl, 45, 45, 0.3, 4.5, 450); + + +` +00 + 0 + 0 + 0 0 + 0 0 +0 00 + +0 + 0 +0 0 + +_ + \ + \ + /\ + / \ + / \ +/ \_ +`; diff --git a/script.js b/script.js deleted file mode 100644 index 85037c3..0000000 --- a/script.js +++ /dev/null @@ -1,70 +0,0 @@ -function coss(height, width, theta) { - let amplitude = height/2; - let period = width; - let dx = Math.PI/width; - let yVal = []; - let x = theta; - - for(let i=0;iλ"; - } else if ((x < halfWidth) && (Math.abs(negy-y) < thick)) { - out += "λ"; - } else { - out += " "; - } - } - out += "\n"; - } - return out; -} - -function putlam(el, height, width, min, max, period) { - let amp = max-min; - const f = function() { - let percent = (Math.sin(((new Date).getTime()/period)) + 1) / 2; - let thick = (amp * percent) + min; - el.innerHTML = lamby(height, width, thick); - }; - window.setInterval(f, 100); -} - -let lamEl = document.querySelector('.lambda'); -putlam(lamEl, 45, 45, 0.3, 4.5, 450); - - -` -00 - 0 - 0 - 0 0 - 0 0 -0 00 - -0 - 0 -0 0 - -_ - \ - \ - /\ - / \ - / \ -/ \_ -`; -- cgit v1.2.3