summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xvec2-averages.lua51
-rwxr-xr-xvec3-cross.lua41
2 files changed, 92 insertions, 0 deletions
diff --git a/vec2-averages.lua b/vec2-averages.lua
new file mode 100755
index 0000000..94247e9
--- /dev/null
+++ b/vec2-averages.lua
@@ -0,0 +1,51 @@
+#!/usr/bin/env lua
+local eyes = require "eyes"
+local format = require "format"
+local reading = require "reading"
+local vec2 = require "cpml".vec2
+local readout = {
+ [0] = vec2.new{ 0, 0},
+ [1] = vec2.new{ 0, 1},
+ [2] = vec2.new{ 1, 0},
+ [3] = vec2.new{ 0, -1},
+ [4] = vec2.new{-1, 0},
+}
+local translation = {
+ [0] = vec2.new{0, 0},
+ [1] = vec2.new{0, 1},
+ [2] = vec2.new{0.447, 0.894},
+ [3] = vec2.new{0.707, 0.707},
+ [4] = vec2.new{0.894, 0.447},
+ [5] = vec2.new{1, 0},
+ [6] = vec2.new{0.894, -0.447},
+ [7] = vec2.new{0.707, -0.707},
+ [8] = vec2.new{0.447, -0.894},
+ [9] = vec2.new{0, -1},
+ [10] = vec2.new{-0.447, -0.894},
+ [11] = vec2.new{-0.707, -0.707},
+ [12] = vec2.new{-0.894, -0.447},
+ [13] = vec2.new{-1, 0},
+ [14] = vec2.new{-0.894, 0.447},
+ [15] = vec2.new{-0.707, 0.707},
+ [16] = vec2.new{-0.447, 0.894},
+}
+
+
+function translate (v)
+ for i, r in pairs(translation) do -- Lookup would use floating point equality...
+ if vec2.dist(r, v) < 0.01 then
+ return i
+ end
+ end
+ error "unexpected vec2"
+end
+
+
+for _, message in ipairs(eyes) do
+ local values = {}
+ for _, a, b, c in reading.trigrams(message) do
+ local v = readout[a] + readout[b] + readout[c]
+ table.insert(values, translate(v:normalize()))
+ end
+ print(format.csv(values))
+end
diff --git a/vec3-cross.lua b/vec3-cross.lua
new file mode 100755
index 0000000..304c9f5
--- /dev/null
+++ b/vec3-cross.lua
@@ -0,0 +1,41 @@
+#!/usr/bin/env lua
+local eyes = require "eyes"
+local format = require "format"
+local reading = require "reading"
+local vec3 = require "cpml".vec3
+local readout = {
+ [0] = vec3.new{ 0, 0, 1},
+ [1] = vec3.new{ 0, 1, 0},
+ [2] = vec3.new{ 1, 0, 0},
+ [3] = vec3.new{ 0, -1, 0},
+ [4] = vec3.new{-1, 0, 0},
+}
+local translation = {
+ vec3.new{ 0, 0, 0},
+ vec3.new{ 0, 0, 1},
+ vec3.new{ 0, 1, 0},
+ vec3.new{ 1, 0, 0},
+ vec3.new{ 0, 0, -1},
+ vec3.new{ 0, -1, 0},
+ vec3.new{-1, 0, 0},
+}
+
+
+function translate (v)
+ for i, r in ipairs(translation) do
+ if r == v then
+ return i - 1
+ end
+ end
+ error "unexpected vec3"
+end
+
+
+for _, message in ipairs(eyes) do
+ local values = {}
+ for _, a, b, c in reading.trigrams(message) do
+ local v = readout[a]:cross(readout[b]):cross(readout[c])
+ table.insert(values, translate(v))
+ end
+ print(format.csv(values))
+end