engeom 0.1.2__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {engeom-0.1.2 → engeom-0.2.1}/Cargo.lock +97 -18
- {engeom-0.1.2 → engeom-0.2.1}/Cargo.toml +2 -1
- {engeom-0.1.2 → engeom-0.2.1}/PKG-INFO +1 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/Cargo.lock +106 -28
- {engeom-0.1.2 → engeom-0.2.1}/engeom/Cargo.toml +8 -8
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/airfoil/camber.rs +31 -5
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/airfoil/edges.rs +130 -76
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/airfoil/helpers.rs +8 -8
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/airfoil/inscribed_circle.rs +18 -16
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/airfoil/orientation.rs +11 -34
- engeom-0.2.1/engeom/src/airfoil.rs +651 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/angles.rs +44 -14
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/discrete_domain.rs +1 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/indices.rs +0 -2
- engeom-0.2.1/engeom/src/common/kd_tree.rs +253 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/points.rs +2 -6
- engeom-0.2.1/engeom/src/common/poisson_disk.rs +97 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/svd_basis.rs +6 -6
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common.rs +3 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/func1/polynomial.rs +2 -3
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/func1/series1.rs +1 -1
- engeom-0.2.1/engeom/src/geom2/aabb2.rs +124 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/align2/jacobian.rs +14 -11
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/align2/points_to_curve.rs +1 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/align2/rc_params2.rs +0 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/circle2.rs +311 -16
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/curve2.rs +112 -29
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/hull.rs +17 -18
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/line2.rs +61 -10
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/polyline2.rs +6 -6
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2.rs +36 -3
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/align3/points_to_mesh.rs +4 -4
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/align3/rotations.rs +10 -10
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/align3.rs +14 -14
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/curve3.rs +5 -5
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/mesh/patches.rs +5 -6
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/mesh/serialization.rs +2 -2
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/mesh.rs +32 -18
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/plane3.rs +1 -1
- engeom-0.2.1/engeom/src/geom3/point_cloud.rs +299 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3.rs +5 -2
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/lib.rs +4 -2
- engeom-0.2.1/engeom/src/metrology/dimension.rs +40 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/metrology/line_profiles.rs +3 -5
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/metrology/tolerance.rs +1 -1
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/metrology/tolerance_map.rs +3 -5
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/metrology.rs +3 -0
- {engeom-0.1.2 → engeom-0.2.1}/pyproject.toml +3 -0
- engeom-0.2.1/python/engeom/airfoil/__init__.py +5 -0
- engeom-0.2.1/python/engeom/airfoil.pyi +334 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/align.pyi +2 -2
- engeom-0.2.1/python/engeom/engeom.pyi +8 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/geom2.pyi +234 -16
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/geom3.pyi +66 -26
- engeom-0.2.1/python/engeom/matplotlib.py +240 -0
- engeom-0.2.1/python/engeom/metrology/__init__.py +5 -0
- engeom-0.2.1/python/engeom/metrology.pyi +32 -0
- engeom-0.2.1/python/engeom/pyvista.py +64 -0
- engeom-0.2.1/python/tests/test_geom2_simple.py +85 -0
- engeom-0.2.1/src/airfoil.rs +400 -0
- {engeom-0.1.2 → engeom-0.2.1}/src/alignments.rs +3 -3
- engeom-0.2.1/src/bounding.rs +150 -0
- engeom-0.2.1/src/common.rs +51 -0
- {engeom-0.1.2 → engeom-0.2.1}/src/conversions.rs +30 -1
- {engeom-0.1.2 → engeom-0.2.1}/src/geom2.rs +280 -38
- {engeom-0.1.2 → engeom-0.2.1}/src/geom3.rs +59 -35
- {engeom-0.1.2 → engeom-0.2.1}/src/lib.rs +55 -15
- {engeom-0.1.2 → engeom-0.2.1}/src/mesh.rs +62 -56
- engeom-0.2.1/src/metrology.rs +62 -0
- {engeom-0.1.2 → engeom-0.2.1}/src/svd_basis.rs +3 -2
- engeom-0.1.2/engeom/src/airfoil.rs +0 -335
- engeom-0.1.2/engeom/src/geom2/kd_tree2.rs +0 -35
- engeom-0.1.2/engeom/src/geom3/kd_tree3.rs +0 -46
- engeom-0.1.2/engeom/src/geom3/points.rs +0 -19
- engeom-0.1.2/python/engeom/engeom.pyi +0 -8
- engeom-0.1.2/python/engeom/matplotlib.py +0 -80
- engeom-0.1.2/python/engeom/pyvista.py +0 -63
- engeom-0.1.2/src/common.rs +0 -51
- {engeom-0.1.2 → engeom-0.2.1}/.github/workflows/CI.yml +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/.gitignore +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/.gitmodules +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/.gitignore +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/README.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/airfoils/camber.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/airfoils/overview.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/common/angles.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/common/core_space.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/common/discrete_domain.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/common/images/surface_point_meas.svg +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/common/svd_basis.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/geom2/alignment.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/geom2/curve.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/geom2/point_collections.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/geom2/shapes.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/index.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/javascripts/mathjax.js +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/docs/python_rust.md +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/mkdocs.yml +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/align.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/convert_2d_3d.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/interval.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/surface_point.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/common/vec_f64.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/errors.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/func1/common_functions.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/func1.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/align2.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom2/angles2.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/align3/jacobian.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/align3/multi_param.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/geom3/mesh/uv_mapping.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/io.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/metrology/surface_deviation.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/stats.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/engeom/src/utility.rs +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/__init__.py +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/align/__init__.py +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/geom2/__init__.py +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/engeom/geom3/__init__.py +0 -0
- {engeom-0.1.2 → engeom-0.2.1}/python/tests/test_all.py +0 -0
@@ -11,7 +11,16 @@ dependencies = [
|
|
11
11
|
"cfg-if",
|
12
12
|
"once_cell",
|
13
13
|
"version_check",
|
14
|
-
"zerocopy",
|
14
|
+
"zerocopy 0.7.35",
|
15
|
+
]
|
16
|
+
|
17
|
+
[[package]]
|
18
|
+
name = "aligned-vec"
|
19
|
+
version = "0.6.1"
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
21
|
+
checksum = "7e0966165eaf052580bd70eb1b32cb3d6245774c0104d1b2793e9650bf83b52a"
|
22
|
+
dependencies = [
|
23
|
+
"equator",
|
15
24
|
]
|
16
25
|
|
17
26
|
[[package]]
|
@@ -29,6 +38,12 @@ dependencies = [
|
|
29
38
|
"num-traits",
|
30
39
|
]
|
31
40
|
|
41
|
+
[[package]]
|
42
|
+
name = "array-init"
|
43
|
+
version = "2.1.0"
|
44
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
45
|
+
checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc"
|
46
|
+
|
32
47
|
[[package]]
|
33
48
|
name = "arrayvec"
|
34
49
|
version = "0.7.6"
|
@@ -77,6 +92,12 @@ version = "1.0.0"
|
|
77
92
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
78
93
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
79
94
|
|
95
|
+
[[package]]
|
96
|
+
name = "cmov"
|
97
|
+
version = "0.3.1"
|
98
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
99
|
+
checksum = "1b1dc960ba75d543267db9254da8ec1cb318a037beb3f8d2497520e410096fab"
|
100
|
+
|
80
101
|
[[package]]
|
81
102
|
name = "crossbeam-deque"
|
82
103
|
version = "0.8.6"
|
@@ -149,7 +170,7 @@ dependencies = [
|
|
149
170
|
|
150
171
|
[[package]]
|
151
172
|
name = "engeom"
|
152
|
-
version = "0.
|
173
|
+
version = "0.2.0"
|
153
174
|
dependencies = [
|
154
175
|
"itertools 0.14.0",
|
155
176
|
"kiddo",
|
@@ -164,6 +185,26 @@ dependencies = [
|
|
164
185
|
"stl_io",
|
165
186
|
]
|
166
187
|
|
188
|
+
[[package]]
|
189
|
+
name = "equator"
|
190
|
+
version = "0.2.2"
|
191
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
192
|
+
checksum = "c35da53b5a021d2484a7cc49b2ac7f2d840f8236a286f84202369bd338d761ea"
|
193
|
+
dependencies = [
|
194
|
+
"equator-macro",
|
195
|
+
]
|
196
|
+
|
197
|
+
[[package]]
|
198
|
+
name = "equator-macro"
|
199
|
+
version = "0.2.1"
|
200
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
201
|
+
checksum = "3bf679796c0322556351f287a51b49e48f7c4986e727b5dd78c972d30e2e16cc"
|
202
|
+
dependencies = [
|
203
|
+
"proc-macro2",
|
204
|
+
"quote",
|
205
|
+
"syn",
|
206
|
+
]
|
207
|
+
|
167
208
|
[[package]]
|
168
209
|
name = "fixed"
|
169
210
|
version = "1.28.0"
|
@@ -201,13 +242,14 @@ dependencies = [
|
|
201
242
|
|
202
243
|
[[package]]
|
203
244
|
name = "getrandom"
|
204
|
-
version = "0.
|
245
|
+
version = "0.3.1"
|
205
246
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
206
|
-
checksum = "
|
247
|
+
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
|
207
248
|
dependencies = [
|
208
249
|
"cfg-if",
|
209
250
|
"libc",
|
210
251
|
"wasi",
|
252
|
+
"windows-targets",
|
211
253
|
]
|
212
254
|
|
213
255
|
[[package]]
|
@@ -293,11 +335,14 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
|
293
335
|
|
294
336
|
[[package]]
|
295
337
|
name = "kiddo"
|
296
|
-
version = "
|
338
|
+
version = "5.0.3"
|
297
339
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
298
|
-
checksum = "
|
340
|
+
checksum = "c6e580022eee0bcd05b8c1c43d3512e79bfa001ccf88ef3dcfd1a3ac74b4e390"
|
299
341
|
dependencies = [
|
342
|
+
"aligned-vec",
|
343
|
+
"array-init",
|
300
344
|
"az",
|
345
|
+
"cmov",
|
301
346
|
"divrem",
|
302
347
|
"doc-comment",
|
303
348
|
"elapsed",
|
@@ -599,7 +644,7 @@ version = "0.2.20"
|
|
599
644
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
600
645
|
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
|
601
646
|
dependencies = [
|
602
|
-
"zerocopy",
|
647
|
+
"zerocopy 0.7.35",
|
603
648
|
]
|
604
649
|
|
605
650
|
[[package]]
|
@@ -613,13 +658,14 @@ dependencies = [
|
|
613
658
|
|
614
659
|
[[package]]
|
615
660
|
name = "py-engeom"
|
616
|
-
version = "0.1
|
661
|
+
version = "0.2.1"
|
617
662
|
dependencies = [
|
618
663
|
"engeom",
|
619
664
|
"numpy",
|
620
665
|
"parry2d-f64",
|
621
666
|
"parry3d-f64",
|
622
667
|
"pyo3",
|
668
|
+
"rand",
|
623
669
|
]
|
624
670
|
|
625
671
|
[[package]]
|
@@ -696,20 +742,20 @@ dependencies = [
|
|
696
742
|
|
697
743
|
[[package]]
|
698
744
|
name = "rand"
|
699
|
-
version = "0.
|
745
|
+
version = "0.9.0"
|
700
746
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
701
|
-
checksum = "
|
747
|
+
checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
|
702
748
|
dependencies = [
|
703
|
-
"libc",
|
704
749
|
"rand_chacha",
|
705
750
|
"rand_core",
|
751
|
+
"zerocopy 0.8.14",
|
706
752
|
]
|
707
753
|
|
708
754
|
[[package]]
|
709
755
|
name = "rand_chacha"
|
710
|
-
version = "0.
|
756
|
+
version = "0.9.0"
|
711
757
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
712
|
-
checksum = "
|
758
|
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
|
713
759
|
dependencies = [
|
714
760
|
"ppv-lite86",
|
715
761
|
"rand_core",
|
@@ -717,11 +763,12 @@ dependencies = [
|
|
717
763
|
|
718
764
|
[[package]]
|
719
765
|
name = "rand_core"
|
720
|
-
version = "0.
|
766
|
+
version = "0.9.0"
|
721
767
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
722
|
-
checksum = "
|
768
|
+
checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff"
|
723
769
|
dependencies = [
|
724
770
|
"getrandom",
|
771
|
+
"zerocopy 0.8.14",
|
725
772
|
]
|
726
773
|
|
727
774
|
[[package]]
|
@@ -1054,9 +1101,12 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
1054
1101
|
|
1055
1102
|
[[package]]
|
1056
1103
|
name = "wasi"
|
1057
|
-
version = "0.
|
1104
|
+
version = "0.13.3+wasi-0.2.2"
|
1058
1105
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1059
|
-
checksum = "
|
1106
|
+
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
|
1107
|
+
dependencies = [
|
1108
|
+
"wit-bindgen-rt",
|
1109
|
+
]
|
1060
1110
|
|
1061
1111
|
[[package]]
|
1062
1112
|
name = "wide"
|
@@ -1218,6 +1268,15 @@ version = "0.52.6"
|
|
1218
1268
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1219
1269
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
1220
1270
|
|
1271
|
+
[[package]]
|
1272
|
+
name = "wit-bindgen-rt"
|
1273
|
+
version = "0.33.0"
|
1274
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1275
|
+
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
|
1276
|
+
dependencies = [
|
1277
|
+
"bitflags",
|
1278
|
+
]
|
1279
|
+
|
1221
1280
|
[[package]]
|
1222
1281
|
name = "zerocopy"
|
1223
1282
|
version = "0.7.35"
|
@@ -1225,7 +1284,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1225
1284
|
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
|
1226
1285
|
dependencies = [
|
1227
1286
|
"byteorder",
|
1228
|
-
"zerocopy-derive",
|
1287
|
+
"zerocopy-derive 0.7.35",
|
1288
|
+
]
|
1289
|
+
|
1290
|
+
[[package]]
|
1291
|
+
name = "zerocopy"
|
1292
|
+
version = "0.8.14"
|
1293
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1294
|
+
checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468"
|
1295
|
+
dependencies = [
|
1296
|
+
"zerocopy-derive 0.8.14",
|
1229
1297
|
]
|
1230
1298
|
|
1231
1299
|
[[package]]
|
@@ -1238,3 +1306,14 @@ dependencies = [
|
|
1238
1306
|
"quote",
|
1239
1307
|
"syn",
|
1240
1308
|
]
|
1309
|
+
|
1310
|
+
[[package]]
|
1311
|
+
name = "zerocopy-derive"
|
1312
|
+
version = "0.8.14"
|
1313
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1314
|
+
checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1"
|
1315
|
+
dependencies = [
|
1316
|
+
"proc-macro2",
|
1317
|
+
"quote",
|
1318
|
+
"syn",
|
1319
|
+
]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[package]
|
2
2
|
name = "py-engeom"
|
3
|
-
version = "0.1
|
3
|
+
version = "0.2.1"
|
4
4
|
edition = "2021"
|
5
5
|
|
6
6
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
@@ -14,4 +14,5 @@ engeom = { path = "./engeom", features = ["stl"]}
|
|
14
14
|
parry3d-f64 = {version= "0.18.0", features=["serde-serialize"]}
|
15
15
|
parry2d-f64 = {version= "0.18.0", features=["serde-serialize"]}
|
16
16
|
numpy = "0.23.0"
|
17
|
+
rand = "0.9.0"
|
17
18
|
|
@@ -11,7 +11,7 @@ dependencies = [
|
|
11
11
|
"cfg-if",
|
12
12
|
"once_cell",
|
13
13
|
"version_check",
|
14
|
-
"zerocopy",
|
14
|
+
"zerocopy 0.7.32",
|
15
15
|
]
|
16
16
|
|
17
17
|
[[package]]
|
@@ -23,6 +23,15 @@ dependencies = [
|
|
23
23
|
"memchr",
|
24
24
|
]
|
25
25
|
|
26
|
+
[[package]]
|
27
|
+
name = "aligned-vec"
|
28
|
+
version = "0.6.1"
|
29
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
30
|
+
checksum = "7e0966165eaf052580bd70eb1b32cb3d6245774c0104d1b2793e9650bf83b52a"
|
31
|
+
dependencies = [
|
32
|
+
"equator",
|
33
|
+
]
|
34
|
+
|
26
35
|
[[package]]
|
27
36
|
name = "allocator-api2"
|
28
37
|
version = "0.2.16"
|
@@ -50,6 +59,12 @@ dependencies = [
|
|
50
59
|
"num-traits",
|
51
60
|
]
|
52
61
|
|
62
|
+
[[package]]
|
63
|
+
name = "array-init"
|
64
|
+
version = "2.1.0"
|
65
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
66
|
+
checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc"
|
67
|
+
|
53
68
|
[[package]]
|
54
69
|
name = "arrayvec"
|
55
70
|
version = "0.7.4"
|
@@ -162,6 +177,12 @@ version = "0.6.0"
|
|
162
177
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
163
178
|
checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
|
164
179
|
|
180
|
+
[[package]]
|
181
|
+
name = "cmov"
|
182
|
+
version = "0.3.1"
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
184
|
+
checksum = "1b1dc960ba75d543267db9254da8ec1cb318a037beb3f8d2497520e410096fab"
|
185
|
+
|
165
186
|
[[package]]
|
166
187
|
name = "criterion"
|
167
188
|
version = "0.5.1"
|
@@ -276,7 +297,7 @@ dependencies = [
|
|
276
297
|
|
277
298
|
[[package]]
|
278
299
|
name = "engeom"
|
279
|
-
version = "0.
|
300
|
+
version = "0.2.0"
|
280
301
|
dependencies = [
|
281
302
|
"approx",
|
282
303
|
"criterion",
|
@@ -294,6 +315,26 @@ dependencies = [
|
|
294
315
|
"test-case",
|
295
316
|
]
|
296
317
|
|
318
|
+
[[package]]
|
319
|
+
name = "equator"
|
320
|
+
version = "0.2.2"
|
321
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
322
|
+
checksum = "c35da53b5a021d2484a7cc49b2ac7f2d840f8236a286f84202369bd338d761ea"
|
323
|
+
dependencies = [
|
324
|
+
"equator-macro",
|
325
|
+
]
|
326
|
+
|
327
|
+
[[package]]
|
328
|
+
name = "equator-macro"
|
329
|
+
version = "0.2.1"
|
330
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
331
|
+
checksum = "3bf679796c0322556351f287a51b49e48f7c4986e727b5dd78c972d30e2e16cc"
|
332
|
+
dependencies = [
|
333
|
+
"proc-macro2",
|
334
|
+
"quote",
|
335
|
+
"syn",
|
336
|
+
]
|
337
|
+
|
297
338
|
[[package]]
|
298
339
|
name = "errno"
|
299
340
|
version = "0.3.8"
|
@@ -328,9 +369,9 @@ dependencies = [
|
|
328
369
|
|
329
370
|
[[package]]
|
330
371
|
name = "generator"
|
331
|
-
version = "0.8.
|
372
|
+
version = "0.8.4"
|
332
373
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
333
|
-
checksum = "
|
374
|
+
checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd"
|
334
375
|
dependencies = [
|
335
376
|
"cfg-if",
|
336
377
|
"libc",
|
@@ -341,13 +382,14 @@ dependencies = [
|
|
341
382
|
|
342
383
|
[[package]]
|
343
384
|
name = "getrandom"
|
344
|
-
version = "0.
|
385
|
+
version = "0.3.1"
|
345
386
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
346
|
-
checksum = "
|
387
|
+
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
|
347
388
|
dependencies = [
|
348
389
|
"cfg-if",
|
349
390
|
"libc",
|
350
391
|
"wasi",
|
392
|
+
"windows-targets",
|
351
393
|
]
|
352
394
|
|
353
395
|
[[package]]
|
@@ -462,11 +504,14 @@ dependencies = [
|
|
462
504
|
|
463
505
|
[[package]]
|
464
506
|
name = "kiddo"
|
465
|
-
version = "
|
507
|
+
version = "5.0.3"
|
466
508
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
467
|
-
checksum = "
|
509
|
+
checksum = "c6e580022eee0bcd05b8c1c43d3512e79bfa001ccf88ef3dcfd1a3ac74b4e390"
|
468
510
|
dependencies = [
|
511
|
+
"aligned-vec",
|
512
|
+
"array-init",
|
469
513
|
"az",
|
514
|
+
"cmov",
|
470
515
|
"divrem",
|
471
516
|
"doc-comment",
|
472
517
|
"elapsed",
|
@@ -503,9 +548,9 @@ dependencies = [
|
|
503
548
|
|
504
549
|
[[package]]
|
505
550
|
name = "libc"
|
506
|
-
version = "0.2.
|
551
|
+
version = "0.2.169"
|
507
552
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
508
|
-
checksum = "
|
553
|
+
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
509
554
|
|
510
555
|
[[package]]
|
511
556
|
name = "libm"
|
@@ -611,9 +656,9 @@ dependencies = [
|
|
611
656
|
|
612
657
|
[[package]]
|
613
658
|
name = "num-traits"
|
614
|
-
version = "0.2.
|
659
|
+
version = "0.2.19"
|
615
660
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
616
|
-
checksum = "
|
661
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
617
662
|
dependencies = [
|
618
663
|
"autocfg",
|
619
664
|
"libm",
|
@@ -765,20 +810,20 @@ dependencies = [
|
|
765
810
|
|
766
811
|
[[package]]
|
767
812
|
name = "rand"
|
768
|
-
version = "0.
|
813
|
+
version = "0.9.0"
|
769
814
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
770
|
-
checksum = "
|
815
|
+
checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
|
771
816
|
dependencies = [
|
772
|
-
"libc",
|
773
817
|
"rand_chacha",
|
774
818
|
"rand_core",
|
819
|
+
"zerocopy 0.8.14",
|
775
820
|
]
|
776
821
|
|
777
822
|
[[package]]
|
778
823
|
name = "rand_chacha"
|
779
|
-
version = "0.
|
824
|
+
version = "0.9.0"
|
780
825
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
781
|
-
checksum = "
|
826
|
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
|
782
827
|
dependencies = [
|
783
828
|
"ppv-lite86",
|
784
829
|
"rand_core",
|
@@ -786,11 +831,12 @@ dependencies = [
|
|
786
831
|
|
787
832
|
[[package]]
|
788
833
|
name = "rand_core"
|
789
|
-
version = "0.
|
834
|
+
version = "0.9.0"
|
790
835
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
791
|
-
checksum = "
|
836
|
+
checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff"
|
792
837
|
dependencies = [
|
793
838
|
"getrandom",
|
839
|
+
"zerocopy 0.8.14",
|
794
840
|
]
|
795
841
|
|
796
842
|
[[package]]
|
@@ -801,9 +847,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
|
801
847
|
|
802
848
|
[[package]]
|
803
849
|
name = "rayon"
|
804
|
-
version = "1.
|
850
|
+
version = "1.10.0"
|
805
851
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
806
|
-
checksum = "
|
852
|
+
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
807
853
|
dependencies = [
|
808
854
|
"either",
|
809
855
|
"rayon-core",
|
@@ -811,9 +857,9 @@ dependencies = [
|
|
811
857
|
|
812
858
|
[[package]]
|
813
859
|
name = "rayon-core"
|
814
|
-
version = "1.12.
|
860
|
+
version = "1.12.1"
|
815
861
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
816
|
-
checksum = "
|
862
|
+
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
817
863
|
dependencies = [
|
818
864
|
"crossbeam-deque",
|
819
865
|
"crossbeam-utils",
|
@@ -1023,9 +1069,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
|
1023
1069
|
|
1024
1070
|
[[package]]
|
1025
1071
|
name = "stl_io"
|
1026
|
-
version = "0.8.
|
1072
|
+
version = "0.8.3"
|
1027
1073
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1028
|
-
checksum = "
|
1074
|
+
checksum = "f985fe7ba9bd93bb8f0158689a0601d4bc5480a7df11c6f22c220fa1bedaefe7"
|
1029
1075
|
dependencies = [
|
1030
1076
|
"byteorder",
|
1031
1077
|
"float-cmp",
|
@@ -1214,9 +1260,12 @@ dependencies = [
|
|
1214
1260
|
|
1215
1261
|
[[package]]
|
1216
1262
|
name = "wasi"
|
1217
|
-
version = "0.
|
1263
|
+
version = "0.13.3+wasi-0.2.2"
|
1218
1264
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1219
|
-
checksum = "
|
1265
|
+
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
|
1266
|
+
dependencies = [
|
1267
|
+
"wit-bindgen-rt",
|
1268
|
+
]
|
1220
1269
|
|
1221
1270
|
[[package]]
|
1222
1271
|
name = "wasm-bindgen"
|
@@ -1460,13 +1509,31 @@ version = "0.52.6"
|
|
1460
1509
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1461
1510
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
1462
1511
|
|
1512
|
+
[[package]]
|
1513
|
+
name = "wit-bindgen-rt"
|
1514
|
+
version = "0.33.0"
|
1515
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1516
|
+
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
|
1517
|
+
dependencies = [
|
1518
|
+
"bitflags",
|
1519
|
+
]
|
1520
|
+
|
1463
1521
|
[[package]]
|
1464
1522
|
name = "zerocopy"
|
1465
1523
|
version = "0.7.32"
|
1466
1524
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1467
1525
|
checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
|
1468
1526
|
dependencies = [
|
1469
|
-
"zerocopy-derive",
|
1527
|
+
"zerocopy-derive 0.7.32",
|
1528
|
+
]
|
1529
|
+
|
1530
|
+
[[package]]
|
1531
|
+
name = "zerocopy"
|
1532
|
+
version = "0.8.14"
|
1533
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1534
|
+
checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468"
|
1535
|
+
dependencies = [
|
1536
|
+
"zerocopy-derive 0.8.14",
|
1470
1537
|
]
|
1471
1538
|
|
1472
1539
|
[[package]]
|
@@ -1479,3 +1546,14 @@ dependencies = [
|
|
1479
1546
|
"quote",
|
1480
1547
|
"syn",
|
1481
1548
|
]
|
1549
|
+
|
1550
|
+
[[package]]
|
1551
|
+
name = "zerocopy-derive"
|
1552
|
+
version = "0.8.14"
|
1553
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
1554
|
+
checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1"
|
1555
|
+
dependencies = [
|
1556
|
+
"proc-macro2",
|
1557
|
+
"quote",
|
1558
|
+
"syn",
|
1559
|
+
]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[package]
|
2
2
|
name = "engeom"
|
3
|
-
version = "0.
|
3
|
+
version = "0.2.0"
|
4
4
|
edition = "2021"
|
5
5
|
readme = "README.md"
|
6
6
|
|
@@ -13,15 +13,15 @@ parry2d-f64 = {version= "0.18.0", features=["serde-serialize"]}
|
|
13
13
|
serde = {version ="1.0", features=["derive"]}
|
14
14
|
serde_json = "1.0"
|
15
15
|
itertools = "0.14.0"
|
16
|
-
rayon = "1.
|
16
|
+
rayon = "1.10.0"
|
17
17
|
levenberg-marquardt = "0.14.0"
|
18
|
-
rand = "0.
|
19
|
-
kiddo = "
|
20
|
-
stl_io = {version= "0.8.
|
21
|
-
num-traits = "0.2"
|
18
|
+
rand = "0.9.0"
|
19
|
+
kiddo = "5.0.3"
|
20
|
+
stl_io = {version= "0.8.3", optional=true}
|
21
|
+
num-traits = "0.2.19"
|
22
22
|
|
23
23
|
[dev-dependencies]
|
24
|
-
test-case = "3.
|
24
|
+
test-case = "3.3.1"
|
25
25
|
approx = "0.5.1"
|
26
26
|
criterion = "0.5.1"
|
27
|
-
rand = "0.
|
27
|
+
rand = "0.9.0"
|
@@ -5,15 +5,41 @@ use super::helpers::{
|
|
5
5
|
};
|
6
6
|
use crate::airfoil::inscribed_circle::InscribedCircle;
|
7
7
|
use crate::common::points::{dist, mid_point};
|
8
|
+
use crate::common::BestFit;
|
9
|
+
use crate::common::Resample::ByCount;
|
8
10
|
use crate::geom2::hull::farthest_pair_indices;
|
9
11
|
use crate::geom2::polyline2::SpanningRay;
|
10
12
|
use crate::geom2::{rot90, Line2};
|
11
13
|
use crate::AngleDir::{Ccw, Cw};
|
12
|
-
use crate::Curve2;
|
13
14
|
use crate::Result;
|
15
|
+
use crate::{Circle2, Curve2, UnitVec2};
|
14
16
|
use parry2d_f64::query::Ray;
|
15
17
|
use parry2d_f64::shape::ConvexPolygon;
|
16
18
|
|
19
|
+
/// Given a curve representing a camber line, attempt to detect the direction of the upper
|
20
|
+
/// (suction, convex) side of the airfoil section. To do so, we will resample the curve to a
|
21
|
+
/// finite number of points and then best-fit a circle to the points. The circle center should be
|
22
|
+
/// on the concave (lower, pressure) side of the camber curve, so the direction from the circle
|
23
|
+
/// center to the center of the camber curve will be the direction of the upper airfoil side.
|
24
|
+
///
|
25
|
+
/// # Arguments
|
26
|
+
///
|
27
|
+
/// * `camber_line`: the curve representing the camber line of the airfoil section
|
28
|
+
///
|
29
|
+
/// returns: Result<Unit<Matrix<f64, Const<2>, Const<1>, ArrayStorage<f64, 2, 1>>>, Box<dyn Error, Global>>
|
30
|
+
pub fn camber_detect_upper_dir(camber_line: &Curve2) -> Result<UnitVec2> {
|
31
|
+
let mid_point = camber_line.at_fraction(0.5).unwrap().point();
|
32
|
+
let resampled = camber_line.resample(ByCount(50))?;
|
33
|
+
let guess = Circle2::from_3_points(
|
34
|
+
camber_line.at_front().point(),
|
35
|
+
mid_point,
|
36
|
+
camber_line.at_back().point(),
|
37
|
+
)?;
|
38
|
+
let circle = Circle2::fitting_circle(resampled.points(), &guess, BestFit::All)?;
|
39
|
+
|
40
|
+
Ok(UnitVec2::new_normalize(mid_point - circle.center))
|
41
|
+
}
|
42
|
+
|
17
43
|
/// Attempts to calculate and extract the mean camber line from an airfoil section curve and its
|
18
44
|
/// convex hull using the inscribed circle method.
|
19
45
|
///
|
@@ -36,7 +62,7 @@ use parry2d_f64::shape::ConvexPolygon;
|
|
36
62
|
/// * `section`: the airfoil section curve
|
37
63
|
/// * `hull`: the convex hull of the airfoil section
|
38
64
|
/// * `tol`: an optional tolerance value which will determine when to add new circles between the
|
39
|
-
///
|
65
|
+
/// existing circles. This value will default to 1e-3 if not specified.
|
40
66
|
///
|
41
67
|
/// returns: Result<Vec<InscribedCircle, Global>, Box<dyn Error, Global>>
|
42
68
|
pub fn extract_camber_line(
|
@@ -117,7 +143,7 @@ fn advance_search_along_ray(section: &Curve2, last_station: &InscribedCircle) ->
|
|
117
143
|
// First, we want to test if the new ray spans at least 50% of the last station's
|
118
144
|
// distance between the upper and lower contact points. This is a heuristic to ensure
|
119
145
|
// we haven't taken a step where the section thickness is dropping off too quickly.
|
120
|
-
let last_dist = dist(&last_station.
|
146
|
+
let last_dist = dist(&last_station.contact_pos, &last_station.contact_neg);
|
121
147
|
let new_dist = ray.dir().norm();
|
122
148
|
|
123
149
|
if new_dist < 0.5 * last_dist {
|
@@ -155,9 +181,9 @@ enum RayAdvance {
|
|
155
181
|
///
|
156
182
|
/// * `curve`: the airfoil section curve
|
157
183
|
/// * `starting_ray`: the starting spanning ray for the camber line, determines the direction the
|
158
|
-
///
|
184
|
+
/// algorithm will advance.
|
159
185
|
/// * `tol`: an optional tolerance value which will determine when to add new circles between the
|
160
|
-
///
|
186
|
+
/// existing circles. This value will default to 1e-3 if not specified.
|
161
187
|
///
|
162
188
|
/// returns: Result<Vec<InscribedCircle, Global>, Box<dyn Error, Global>>
|
163
189
|
fn extract_half_camber_line(
|