Serge Bazanski | 18c1a26 | 2022-07-07 14:24:53 +0200 | [diff] [blame] | 1 | local node = Node:extend('nodes.at', { |
| 2 | }) |
| 3 | -- local papa = love.graphics.newImage("papa.png") |
| 4 | local h = 25.0 |
| 5 | local v = { |
| 6 | {-h, -h, -h}, |
| 7 | { h, -h, -h}, |
| 8 | { h, h, -h}, |
| 9 | {-h, h, -h}, |
| 10 | {-h, -h, h}, |
| 11 | { h, -h, h}, |
| 12 | { h, h, h}, |
| 13 | {-h, h, h} |
| 14 | } |
| 15 | |
| 16 | local c = { |
| 17 | {0, 1, 31}, |
| 18 | {1, 2, 31}, |
| 19 | {2, 3, 31}, |
| 20 | {3, 0, 31}, |
| 21 | {0, 4, 34}, |
| 22 | {1, 5, 34}, |
| 23 | {2, 6, 34}, |
| 24 | {3, 7, 34}, |
| 25 | {4, 5, 32}, |
| 26 | {5, 6,32}, |
| 27 | {6, 7,32}, |
| 28 | {7, 4,32} |
| 29 | } |
| 30 | |
| 31 | local E = 100 * math.tan(2*math.pi/3) |
| 32 | |
| 33 | function to2d(p) return p[1] * E / (p[3]+E), p[2] * E / (p[3]+E) end |
| 34 | |
| 35 | function node:render() |
| 36 | love.graphics.setColor( 0, 0, 0 ) |
| 37 | love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), love.graphics.getHeight()) |
| 38 | love.graphics.setColor( 1.0, 1.0, 1.0 ) |
| 39 | local w = love.graphics.getWidth() / 2 |
| 40 | local h = love.graphics.getHeight() / 2 |
| 41 | local scl = 6 |
| 42 | for _, p in ipairs(c) do |
| 43 | x1, y1 = to2d(v[p[1]+1]) |
| 44 | x2, y2 = to2d(v[p[2]+1]) |
| 45 | love.graphics.line(x1 * scl + w, y1 * scl + h, x2 * scl + w, y2 * scl + h) |
| 46 | end |
| 47 | end |
| 48 | |
| 49 | function node:update(dt) |
| 50 | for _, vec in ipairs(v) do |
| 51 | angle = -dt/3 |
| 52 | nv0 = math.cos(angle) * vec[1] + math.sin(angle) * vec[3] |
| 53 | nv2 = -math.sin(angle) * vec[1] + math.cos(angle) * vec[3] |
| 54 | vec[1] = nv0 |
| 55 | vec[3] = nv2 |
| 56 | angle = dt |
| 57 | nv1 = math.cos(angle) * vec[2] - math.sin(angle) * vec[3] |
| 58 | nv2 = math.sin(angle) * vec[2] + math.cos(angle) * vec[3] |
| 59 | vec[2] = nv1 |
| 60 | vec[3] = nv2 |
| 61 | end |
| 62 | end |
| 63 | |
| 64 | return node |