65 lines
1.4 KiB
Lua
65 lines
1.4 KiB
Lua
|
local node = Node:extend('nodes.at', {
|
||
|
})
|
||
|
local papa = love.graphics.newImage("papa.png")
|
||
|
local h = 25.0
|
||
|
local v = {
|
||
|
{-h, -h, -h},
|
||
|
{ h, -h, -h},
|
||
|
{ h, h, -h},
|
||
|
{-h, h, -h},
|
||
|
{-h, -h, h},
|
||
|
{ h, -h, h},
|
||
|
{ h, h, h},
|
||
|
{-h, h, h}
|
||
|
}
|
||
|
|
||
|
local c = {
|
||
|
{0, 1, 31},
|
||
|
{1, 2, 31},
|
||
|
{2, 3, 31},
|
||
|
{3, 0, 31},
|
||
|
{0, 4, 34},
|
||
|
{1, 5, 34},
|
||
|
{2, 6, 34},
|
||
|
{3, 7, 34},
|
||
|
{4, 5, 32},
|
||
|
{5, 6,32},
|
||
|
{6, 7,32},
|
||
|
{7, 4,32}
|
||
|
}
|
||
|
|
||
|
local E = 100 * math.tan(2*math.pi/3)
|
||
|
|
||
|
function to2d(p) return p[1] * E / (p[3]+E), p[2] * E / (p[3]+E) end
|
||
|
|
||
|
function node:render()
|
||
|
love.graphics.setColor( 0, 0, 0 )
|
||
|
love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), love.graphics.getHeight())
|
||
|
love.graphics.setColor( 255, 255, 255 )
|
||
|
local w = love.graphics.getWidth() / 2
|
||
|
local h = love.graphics.getHeight() / 2
|
||
|
local scl = 6
|
||
|
for _, p in ipairs(c) do
|
||
|
x1, y1 = to2d(v[p[1]+1])
|
||
|
x2, y2 = to2d(v[p[2]+1])
|
||
|
love.graphics.line(x1 * scl + w, y1 * scl + h, x2 * scl + w, y2 * scl + h)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function node:update(dt)
|
||
|
for _, vec in ipairs(v) do
|
||
|
angle = -dt/3
|
||
|
nv0 = math.cos(angle) * vec[1] + math.sin(angle) * vec[3]
|
||
|
nv2 = -math.sin(angle) * vec[1] + math.cos(angle) * vec[3]
|
||
|
vec[1] = nv0
|
||
|
vec[3] = nv2
|
||
|
angle = dt
|
||
|
nv1 = math.cos(angle) * vec[2] - math.sin(angle) * vec[3]
|
||
|
nv2 = math.sin(angle) * vec[2] + math.cos(angle) * vec[3]
|
||
|
vec[2] = nv1
|
||
|
vec[3] = nv2
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return node
|