已实现嵌套顶点表按x排序,如何排序一维结构顶点表?
一维顶点表按x值排序的实现方案
两种顶点表结构
表中表结构(已实现按x值排序):
verts = { {x,y}, {x,y}, {x,y} }对应的排序代码:
table.sort(verts, function(a,b) return a[1] < b[1] end)一维结构(需实现相同排序逻辑):
verts = { x1,y1, x2,y2, x3,y3, ... }
实现思路及代码
由于一维数组中每个顶点的x和y是成对连续存储的,直接对单个元素排序会破坏x与y的对应关系,因此需要先将一维数组转换为表中表结构,利用已有的排序逻辑处理后,再转回一维数组:
-- 1. 将一维顶点表转换为表中表结构 local temp_table = {} for i = 1, #verts, 2 do table.insert(temp_table, {verts[i], verts[i+1]}) end -- 2. 按x值从小到大排序(复用已有逻辑) table.sort(temp_table, function(a, b) return a[1] < b[1] end) -- 3. 将排序后的表中表转回一维结构 verts = {} for _, vertex in ipairs(temp_table) do table.insert(verts, vertex[1]) table.insert(verts, vertex[2]) end
说明
这段代码通过中间临时表完成结构转换,既复用了你已有的排序逻辑,又保证了每个顶点的x和y始终配对,最终得到按x值排序后的一维顶点表。
内容的提问来源于stack exchange,提问作者Bigfoot71
相关产品推荐
相关产品推荐

