In MATLAB there is a function triplot
(2-D triangular plot - MATLAB triplot) which can be used to make a triangular plot given a connectivity matrix and the corresponding (x, y)
values. Is there a similar function in Julia for this purpose? and similarly e.g. for trimesh
/ trisurf
.
I did see https://github.com/pazner/Triplot.jl previously, although it no longer seems to compile on the current version of Julia.
1 Like
There is one (and probably more) topic about this matter here in the forum (did a quick search but couldn’t find it/them). But see GMT example here.
1 Like
I think the OP is talking about triangle mesh plots.
@DanielVandH take a look at Meshes.jl and MeshViz.jl if you are interested in triangulations and visualizations of these results. Voronoi-Delaunay triangulations are on the roadmap, but you have other packages out there that generate the connectivities.
2 Likes
Ok, then in GMT that is done by the triangualate function. Have no example on its usage but would be
G = triangulate(data, region=(...), spacing=...)
where data
is Mx3 matrix or a GMTdataset
type and G
the output grid.
2 Likes
Thanks @juliohm, this was the simplest for me to understand. It’s quite easy to implement with these packages actually (for triplot
, anyway), e.g:
"""
triplot(T, x, y)
Generates and plots a `SimpleMesh` object for a triangulation with triangle connectivity matrix `T`
and points defined by vectors `x` and `y`. The first output is the `SimpleMesh object, and the
second plot is the scene containing the plot.
"""
function triplot(T, x, y)
# Convert into vector of tuples of points
points = Meshes.Point2[(x[i], y[i]) for i in 1:length(x)]
# Connect the points using the provided connectivity matrix T
connec = Meshes.connect.([(T[i, 1], T[i, 2], T[i, 3]) for i in 1:size(T, 1)])
# Mesh
mesh = Meshes.SimpleMesh(points, connec)
h = MeshViz.viz(mesh, showfacets = true)
return mesh, h
end
mesh, h = triplot(elements, nodes[:, 1], nodes[:, 2])
1 Like