Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local verts = {}
- for i,vert in ipairs(buffer) do
- if vert.x > 0 and vert.x < w and vert.y > 0 and vert.y < h then
- --drawAtPoint(vert, verts)
- verts[vert.nov] = vert
- end
- end
- local sqrs = {}
- for i=1,#model.faces do
- local canDraw = true
- --list of vert ids and a color as the last index
- local sqtab = model.faces[i]
- --converted table of true vert coords compared to vert ids
- local ntab = {}
- local avgDist = 0
- local avgi = 0
- for i=1,(#sqtab - 1) do
- --ID for vert
- local id = sqtab[i]
- if verts[id] ~= nil then
- ntab[i] = {verts[id].x, verts[id].y}
- avgDist = avgDist + verts[id].dist
- avgi = avgi + 1
- else
- canDraw = false
- --break
- end
- end
- local square = triapi.fillSquare(ntab[1], ntab[2], ntab[3], ntab[4])
- local avgDist = avgDist/avgi
- square.dist = avgDist
- square.col = sqtab[5]
- if canDraw then sqrs[#sqrs + 1] = square end
- --triapi.drawShape(square, sqtab[5], colors.black, " ")
- end
- local sqrs_dists = {}
- while #sqrs > 0 do
- local maxDepth = 1
- for i=2,#sqrs do
- if sqrs[i].dist > sqrs[maxDepth].dist then maxDepth = i end
- end
- table.insert(sqrs_dists, sqrs[maxDepth])
- table.remove(sqrs, maxDepth)
- end
- if #sqrs_dists > 3 then
- for i=(#sqrs_dists - 3),#sqrs_dists do
- local sqr = sqrs_dists[i]
- triapi.drawShape(sqr, sqr.col, colors.black, " ")
- end
- else
- for i=1,#sqrs_dists do
- local sqr = sqrs_dists[i]
- triapi.drawShape(sqr, sqr.col, colors.black, " ")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement