Skip to content

Commit ba8bd56

Browse files
authored
improve merge(meshes)
1 parent 48b1ef6 commit ba8bd56

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/meshes.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,17 +228,23 @@ function Base.merge(meshes::AbstractVector{<:Mesh})
228228
elseif length(meshes) == 1
229229
return meshes[1]
230230
else
231-
m1 = meshes[1]
232-
ps = copy(coordinates(m1))
233-
fs = copy(faces(m1))
231+
ps = reduce(vcat, coordinates.(meshes))
232+
fs = reduce(vcat, faces.(meshes))
233+
idx = length(faces(meshes[1]))
234+
offset = length(coordinates(meshes[1]))
234235
for mesh in Iterators.drop(meshes, 1)
235-
append!(fs, map(f -> f .+ length(ps), faces(mesh)))
236-
append!(ps, coordinates(mesh))
236+
N = length(faces(mesh))
237+
for i = idx .+ (1:N)
238+
fs[i] = fs[i] .+ offset
239+
end
240+
idx += N
241+
offset += length(coordinates(mesh))
237242
end
238243
return Mesh(ps, fs)
239244
end
240245
end
241246

247+
242248
"""
243249
pointmeta(mesh::Mesh; meta_data...)
244250

0 commit comments

Comments
 (0)