Skip to content

Commit

Permalink
Add TransformedMesh (#663)
Browse files Browse the repository at this point in the history
* Add 'TransformedMesh'

* Update tests

* Fix tests
  • Loading branch information
eliascarv authored Dec 20, 2023
1 parent 91ef8f8 commit 5c61995
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Meshes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ export
RectilinearGrid,
StructuredGrid,
SimpleMesh,
TransformedMesh,
vertex,
vertices,
nvertices,
Expand Down
1 change: 1 addition & 0 deletions src/mesh.jl
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ include("mesh/cartesiangrid.jl")
include("mesh/rectilineargrid.jl")
include("mesh/structuredgrid.jl")
include("mesh/simplemesh.jl")
include("mesh/transformedmesh.jl")

# ------------
# CONVERSIONS
Expand Down
17 changes: 17 additions & 0 deletions src/mesh/transformedmesh.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# ------------------------------------------------------------------
# Licensed under the MIT License. See LICENSE in the project root.
# ------------------------------------------------------------------

"""
TransformedMesh(mesh, transform)
Lazy representation of a geometric `transform` applied to a `mesh`.
"""
struct TransformedMesh{Dim,T,M<:Mesh{Dim,T},TR<:Transform} <: Mesh{Dim,T}
mesh::M
transform::TR
end

topology(m::TransformedMesh) = topology(m.mesh)

vertex(m::TransformedMesh, ind::Int) = m.transform(vertex(m.mesh, ind))
17 changes: 17 additions & 0 deletions test/mesh.jl
Original file line number Diff line number Diff line change
Expand Up @@ -441,4 +441,21 @@
└─ Triangle(3, 1, 5)"""
end
end

@testset "TransformedMesh" begin
grid = CartesianGrid{T}(10, 10)
rgrid = convert(RectilinearGrid, grid)
sgrid = convert(StructuredGrid, grid)
mesh = convert(SimpleMesh, grid)
trans = Identity()
@test TransformedMesh(grid, trans) == grid
@test TransformedMesh(rgrid, trans) == rgrid
@test TransformedMesh(sgrid, trans) == sgrid
@test TransformedMesh(mesh, trans) == mesh
trans = Translate(T(10), T(10)) Translate(T(-10), T(-10))
@test TransformedMesh(grid, trans) == grid
@test TransformedMesh(rgrid, trans) == rgrid
@test TransformedMesh(sgrid, trans) == sgrid
@test TransformedMesh(mesh, trans) == mesh
end
end
2 changes: 2 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ using Rotations
using Test, Random
using ReferenceTests, ImageIO

using TransformsBase: Identity,

import TransformsBase as TB
import CairoMakie as Mke

Expand Down

0 comments on commit 5c61995

Please sign in to comment.