From a8ab8fa2414347f810bc3f9cf96eb3b03edfdc56 Mon Sep 17 00:00:00 2001 From: Steve Kelly Date: Sun, 7 Jul 2024 08:54:19 -0400 Subject: [PATCH 1/2] update docs --- Project.toml | 2 +- docs/Manifest.toml | 208 ++++++++++++++++++++++++++++++++++++++++--- docs/Project.toml | 2 +- docs/src/examples.md | 34 +------ src/isosurface.jl | 2 +- 5 files changed, 203 insertions(+), 45 deletions(-) diff --git a/Project.toml b/Project.toml index 6faa49a..175049c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Meshing" uuid = "e6723b4c-ebff-59f1-b4b7-d97aa5274f73" -version = "0.7.0" +version = "0.6.0" [deps] diff --git a/docs/Manifest.toml b/docs/Manifest.toml index 893b6f1..3135af1 100644 --- a/docs/Manifest.toml +++ b/docs/Manifest.toml @@ -1,38 +1,133 @@ # This file is machine-generated - editing it directly is not advised +[[ANSIColoredPrinters]] +git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" +uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9" +version = "0.0.1" + +[[AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + [[Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +[[CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "b8fe8546d52ca154ac556809e10c75e6e7430ac8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.5" + [[Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[DocStringExtensions]] deps = ["LibGit2"] -git-tree-sha1 = "a32185f5428d3986f47c2ab78b1f216d5e6cc96f" +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.8.5" +version = "0.9.3" [[Documenter]] -deps = ["Base64", "DocStringExtensions", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"] -git-tree-sha1 = "d45c163c7a3ae293c15361acc52882c0f853f97c" +deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] +git-tree-sha1 = "76deb8c15f37a3853f13ea2226b8f2577652de05" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -version = "0.23.4" +version = "1.5.0" + +[[Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.6.2+0" + +[[FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[Git]] +deps = ["Git_jll"] +git-tree-sha1 = "04eff47b1354d702c3a85e8ab23d539bb7d5957e" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.1" + +[[Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "d18fb8a1f3609361ebda9bf029b60fd0f120c809" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.44.0+2" + +[[IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.5" [[InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + [[JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.2" +version = "0.21.4" + +[[LazilyInitializedFields]] +git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612" +uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" +version = "1.2.2" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" [[LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + [[Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -40,17 +135,61 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +[[MarkdownAST]] +deps = ["AbstractTrees", "Markdown"] +git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899" +uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391" +version = "0.1.2" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+1" + [[Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.1.10" + [[NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.14+0" + +[[PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" [[Parsers]] -deps = ["Dates"] -git-tree-sha1 = "438d35d2d95ae2c5e8780b330592b6de8494e779" +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.0.3" +version = "2.8.1" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.10.0" + +[[PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" [[Printf]] deps = ["Unicode"] @@ -61,11 +200,18 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[Random]] -deps = ["Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +[[RegistryInstances]] +deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"] +git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51" +uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3" +version = "0.1.0" + [[SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" [[Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -73,9 +219,47 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + [[Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +[[TranscodingStreams]] +git-tree-sha1 = "60df3f8126263c0d6b357b9a1017bb94f53e3582" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.0" +weakdeps = ["Random", "Test"] + + [TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + [[Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" diff --git a/docs/Project.toml b/docs/Project.toml index 3fcbfb7..1814eb3 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -2,4 +2,4 @@ Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" [compat] -Documenter = "~0.23" +Documenter = "1" diff --git a/docs/src/examples.md b/docs/src/examples.md index 543fe10..a8580d4 100644 --- a/docs/src/examples.md +++ b/docs/src/examples.md @@ -32,33 +32,7 @@ WGLMakie.mesh(vts, map(v -> GeometryBasics.TriangleFace(v...), fcs)) ![cta cardio](./img/ctacardio.png) -## Functions - -```julia -using Meshing -using FileIO # MeshIO should also be installed -using GeometryBasics - -gyroid(v) = cos(v[1])*sin(v[2])+cos(v[2])*sin(v[3])+cos(v[3])*sin(v[1]) -gyroid_shell(v) = max(gyroid(v)-0.4,-gyroid(v)-0.4) - -# generate directly using GeometryBasics API -# Rect specifies the sampling intervals -gy_mesh = Mesh(gyroid_shell, Rect(Vec(0,0,0),Vec(pi*4,pi*4,pi*4)), - MarchingCubes(), samples=(50,50,50)) - -save("gyroid.ply", gy_mesh) - -# view with Makie -import Makie -using LinearAlgebra -Makie.mesh(gy_mesh, color=[norm(v) for v in coordinates(gy_mesh)]) -``` - -![gyroid](./img/gyroid.png) - - -## Isocaps +## Gyroid and Isocaps We do not provide an equivalent to `isocaps` in Matlab, though a similar result may be achieved by setting the boundary to a large value: @@ -79,10 +53,10 @@ A[end,:,:] .= 1e10 A[:,end,:] .= 1e10 A[:,:,end] .= 1e10 -gy_mesh = GLNormalMesh(A, MarchingCubes()) +vts, fcs = isosurface(A, MarchingCubes()) # view with Makie -import Makie +import WGLMakie using LinearAlgebra -Makie.mesh(gy_mesh, color=[norm(v) for v in gy_mesh.vertices]) +WGLMakie.mesh(vts, map(v -> GeometryBasics.TriangleFace(v...), fcs), color=[norm(v) for v in v]) ``` diff --git a/src/isosurface.jl b/src/isosurface.jl index c643633..c64e472 100644 --- a/src/isosurface.jl +++ b/src/isosurface.jl @@ -9,7 +9,7 @@ `isosurface` is the general interface to all isosurface extraction algorithms. -Returns: (Vector, Vector{FaceType}) +Returns: (Vector{NTuple{3, T}, }, Vector{NTuple{3, Int}}) Defaults: `method` must be an instance of an `AbstractMeshingAlgorithm`, e.g.: From 3302f9be02a0545c31e8351d78c13f536cb3d526 Mon Sep 17 00:00:00 2001 From: Steve Kelly Date: Sun, 7 Jul 2024 09:05:06 -0400 Subject: [PATCH 2/2] update build --- docs/make.jl | 2 +- src/common.jl | 55 --------------------------------------------------- 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 03ca8e5..141eb33 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -4,7 +4,7 @@ using Meshing makedocs( sitename = "Meshing", format = Documenter.HTML(), - modules = [Meshing], + #modules = [Meshing], pages = ["Index" => "index.md", "API" => "api.md", "Examples" => "examples.md"] diff --git a/src/common.jl b/src/common.jl index a1979e9..5ff2bfb 100644 --- a/src/common.jl +++ b/src/common.jl @@ -27,58 +27,3 @@ Called after `_get_cubeindex`. Determines if a voxel index has triangles. @inline function _no_triangles(cubeindex::UInt8) cubeindex == 0x00 || cubeindex == 0xff end - -# -# General isosurface docstring -# - -@doc """ - - function isosurface(sdf::AbstractArray{T, 3}, [ method::AbstractMeshingAlgorithm ], - [ VertType = SVector{3,Float64} ], [ FaceType} = SVector{3, Int} ] ; - origin = SVector(-1.0,-1.0,-1.0), widths = SVector(2.0,2.0,2.0)) - - function isosurface(f::Function, [ method::AbstractMeshingAlgorithm ], - [ VertType = SVector{3,Float64} ], [FaceType = SVector{3, Int} ] ; - origin = SVector(-1.0,-1.0,-1.0), widths = SVector(2.0,2.0,2.0) - samples=(24,24,24))` - -`isosurface` is the general interface to all isosurface extraction algorithms. - -Returns: (Vector{VertType}, Vector{FaceType}) - -Defaults: -- VertType = SVector{3,Float64} (positional) -- FaceType = SVector{3, Int} ] ; (positional) -- origin = SVector(-1.0,-1.0,-1.0) (keyword) -- widths = SVector(2.0,2.0,2.0) (keyword) -- samples=(24,24,24) (keyword, function sampling only) - -`method` must be an instance of an `AbstractMeshingAlgorithm`, e.g.: -- MarchingCubes() -- MarchingTetrahedra() -- NaiveSurfaceNets() - -If `isosurface` is called without a specified algorithm, it will default to MarchingCubes. - -If a subtype of `AbstractArray` is specified, the mesh will by default be centered at the origin between -(-1,1) in each axis. This may be overridden by specifying a new origin and widths for the axis-aligned bounding box -using keywords of the same names. For example if we want our vertices in the range of (0,1), we can specify `origin=SVector(0,0,0)` -and `widths = SVector(1,1,1)`. - -If a function is specified, it will be uniformly sampled in each axis by the amount specified in `samples`. -The function is called using the specifed `VertType`. - -Performance Tips: -- ensure `VertType`, `origin`, and `widths` are all of the same type -- ensure the element type of `VertType` is the same as the specified isolevel - -See also: -- MarchingCubes -- MarchingTetrahedra -- NaiveSurfaceNets - -""" -function isosurface(A; kwargs...) - isosurface(A, MarchingCubes(); kwargs...) -end