@@ -4,14 +4,39 @@ using GeometryTypes
44using LinearAlgebra: dot, norm
55using FileIO
66
7- f (v) = sqrt (sum (dot (v,v))) - 1
8- sdf = SignedDistanceField (f,HyperRectangle (Vec (- 1 ,- 1 ,- 1. ), Vec (2 ,2 ,2. )))
7+ sphere (v) = sqrt (sum (v.^ 2 )) - 1
98
10- mc = HomogenousMesh (sdf, MarchingCubes ())
11- mt = HomogenousMesh (sdf, MarchingTetrahedra ())
12- ns = HomogenousMesh (sdf, NaiveSurfaceNets ())
9+ sdf = SignedDistanceField (sphere, HyperRectangle (Vec (- 1 ,- 1 ,- 1. ), Vec (2 ,2 ,2. )))
1310
14- # save the Sphere as a PLY file
15- save (" sphere_mc.ply" ,mc)
16- save (" sphere_mt.ply" ,mt)
17- save (" sphere_ns.ply" ,ns)
11+ mesh_type = HomogenousMesh{Point{3 ,Float64}, Face{3 ,Int}}
12+
13+ mc = mesh_type (sdf, MarchingCubes ())
14+ mt = mesh_type (sdf, MarchingTetrahedra ())
15+ ns = mesh_type (sdf, NaiveSurfaceNets ())
16+
17+ mcf = mesh_type (sphere, sdf. bounds, MarchingCubes (), samples= size (sdf))
18+ mtf = mesh_type (sphere, sdf. bounds, MarchingTetrahedra (), samples= size (sdf))
19+ nsf = mesh_type (sphere, sdf. bounds, NaiveSurfaceNets (), samples= size (sdf))
20+
21+ # shift
22+ @assert length (mc. vertices) == length (mcf. vertices)
23+ @assert length (mt. vertices) == length (mtf. vertices)
24+ @assert length (ns. vertices) == length (nsf. vertices)
25+
26+ for i in eachindex (mt. vertices)
27+ mt. vertices[i] = mt. vertices[i] .+ Point (3 ,0 ,0 )
28+ mtf. vertices[i] = mtf. vertices[i] .+ Point (3 ,3 ,0 )
29+ end
30+ for i in eachindex (mc. vertices)
31+ mc. vertices[i] = mc. vertices[i] .+ Point (- 3 ,0 ,0 )
32+ mcf. vertices[i] = mcf. vertices[i] .+ Point (- 3 ,3 ,0 )
33+ end
34+ for i in eachindex (ns. vertices)
35+ # ns.vertices[i] = ns.vertices[i] .+ Point(0,0,0)
36+ nsf. vertices[i] = nsf. vertices[i] .+ Point (0 ,3 ,0 )
37+ end
38+
39+ mesh = merge (mc,mt,ns,mcf,mtf,nsf)
40+
41+ # save all in one PLY file
42+ save (" output_comparison.ply" ,mesh)
0 commit comments