JuliaGeometry / GeometryBasics.jl

Basic Geometry Types
MIT License
168 stars 54 forks source link

Meshing a single triangle sometimes returns an empty mesh #158

Open ikirill opened 2 years ago

ikirill commented 2 years ago

The doc page at https://juliageometry.github.io/GeometryBasics.jl/dev/meshes/ is empty, so I'm not sure what I'm expected to do, but creating a mesh out of a single triangle sometimes works:

julia> normal_mesh(Triangle(Point(0,0,0.0),Point(1.0,0,0),Point(0,1.0,0)))
Mesh{3, Float32, Triangle}:
 Triangle(Float32[0.0, 1.0, 0.0], Float32[0.0, 0.0, 0.0], Float32[1.0, 0.0, 0.0])

and sometimes doesn't:

julia> ϕ = (sqrt(5)+1)/2
1.618033988749895
julia> p,q,r = Point(ϕ,0,+1),Point(1,ϕ,0),Point(ϕ,0,-1)
([1.618033988749895, 0.0, 1.0], [1.0, 1.618033988749895, 0.0], [1.618033988749895, 0.0, -1.0])
julia> normal_mesh(Triangle(p,q,r))
Mesh{3, Float64, Triangle}

I was trying to follow the MeshCat.jl's tutorial, and I got this issue while trying to draw a flat triangle.

sjkelly commented 2 years ago

Can you link the MeshCat.jl tutorial? I think MeshCat.jl is on GeometryTypes :/

SimonDanisch commented 2 years ago

I debugged this a bit, it's some weirdness in this constructor: https://github.com/JuliaGeometry/GeometryBasics.jl/blob/master/src/meshes.jl#L91 faces returns nothing, and therefore it tries to triangulate the triangle 😅 I guess the fix would be to implement faces(::Triangle) to return [GLTriangleFace(1, 2, 3)] (or 0, 1, 2)...