From a14208245dabf4c697ce3d30a0e427cad5cf4034 Mon Sep 17 00:00:00 2001 From: Anson Date: Sat, 2 Apr 2022 12:17:45 -0700 Subject: [PATCH] added function to find desired scale --- Manifest.toml | 33 +++++++++++++++++++++++++++++++++ Project.toml | 1 + src/stlProcess.jl | 7 ++++++- test/runtests.jl | 5 ++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 4d22351..47756e3 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -24,10 +24,21 @@ git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.11.0" +[[deps.CommonSolve]] +git-tree-sha1 = "68a0743f578349ada8bc911a5cbd5a2ef6ed6d1f" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.0" + [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f74e9d5388b8620b4cee35d4c5a618dd4dc547f4" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.3.0" + [[deps.DataAPI]] git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" @@ -64,6 +75,10 @@ git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" version = "0.8.4" +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + [[deps.GeometryBasics]] deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] git-tree-sha1 = "83ea630384a13fc4f002b77690bc0afeb4255ac9" @@ -116,6 +131,12 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.9" + [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -173,12 +194,24 @@ git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.0" +[[deps.Roots]] +deps = ["CommonSolve", "Printf", "Setfield"] +git-tree-sha1 = "6085b8ac184add45b586ed8d74468310948dcfe8" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "1.4.0" + [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] +git-tree-sha1 = "38d88503f695eb0301479bc9b0d4320b378bafe5" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "0.8.2" + [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" diff --git a/Project.toml b/Project.toml index 0d0cf8a..299357c 100644 --- a/Project.toml +++ b/Project.toml @@ -6,3 +6,4 @@ version = "0.1.0" [deps] FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" MeshIO = "7269a6da-0436-5bbc-96c2-40638cbb6118" +Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" diff --git a/src/stlProcess.jl b/src/stlProcess.jl index 0a3ef0f..b286539 100644 --- a/src/stlProcess.jl +++ b/src/stlProcess.jl @@ -2,6 +2,7 @@ module stlProcess using MeshIO using FileIO +using Roots struct Properties volume::Float64 @@ -104,6 +105,10 @@ function fast_volume(triangles; scale=1) return volume end -export get_mass_properties, fast_volume +function find_scale(trianges; desired_volume=1) + return find_zero(scale -> fast_volume(trianges; scale=scale) - desired_volume, 2.0) +end + +export get_mass_properties, fast_volume, find_scale end # module diff --git a/test/runtests.jl b/test/runtests.jl index dedf753..17eed18 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,7 +9,7 @@ using LinearAlgebra function _check_volume(triangles; scale=1) """ - Slow algorithm just used to test the other algorithms + Slow, inaccurate algorithm just used to test the other algorithms Reference: https://people.eecs.berkeley.edu/~wkahan/VtetLang.pdf """ @@ -75,4 +75,7 @@ end @test props.volume ≈ volume rtol = 0.01 end end + @testset "Find Scale" begin + @test fast_volume(stl; scale=find_scale(stl)) == 1.0 + end end