engeom 0.1.1__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.
Files changed (127) hide show
  1. {engeom-0.1.1 → engeom-0.2.1}/Cargo.lock +98 -19
  2. {engeom-0.1.1 → engeom-0.2.1}/Cargo.toml +2 -1
  3. {engeom-0.1.1 → engeom-0.2.1}/PKG-INFO +1 -1
  4. {engeom-0.1.1 → engeom-0.2.1}/engeom/Cargo.lock +107 -29
  5. {engeom-0.1.1 → engeom-0.2.1}/engeom/Cargo.toml +8 -8
  6. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/airfoil/camber.rs +31 -5
  7. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/airfoil/edges.rs +130 -76
  8. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/airfoil/helpers.rs +8 -8
  9. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/airfoil/inscribed_circle.rs +18 -16
  10. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/airfoil/orientation.rs +11 -34
  11. engeom-0.2.1/engeom/src/airfoil.rs +651 -0
  12. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/angles.rs +44 -14
  13. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/discrete_domain.rs +1 -1
  14. engeom-0.2.1/engeom/src/common/indices.rs +128 -0
  15. engeom-0.2.1/engeom/src/common/kd_tree.rs +253 -0
  16. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/points.rs +2 -6
  17. engeom-0.2.1/engeom/src/common/poisson_disk.rs +97 -0
  18. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/svd_basis.rs +6 -6
  19. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common.rs +3 -1
  20. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/func1/polynomial.rs +2 -3
  21. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/func1/series1.rs +1 -1
  22. engeom-0.2.1/engeom/src/geom2/aabb2.rs +124 -0
  23. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/align2/jacobian.rs +14 -11
  24. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/align2/points_to_curve.rs +1 -1
  25. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/align2/rc_params2.rs +0 -1
  26. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/circle2.rs +311 -16
  27. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/curve2.rs +113 -30
  28. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/hull.rs +17 -18
  29. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/line2.rs +61 -10
  30. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/polyline2.rs +6 -6
  31. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2.rs +36 -3
  32. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/align3/points_to_mesh.rs +4 -4
  33. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/align3/rotations.rs +10 -10
  34. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/align3.rs +14 -14
  35. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/curve3.rs +15 -5
  36. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/mesh/patches.rs +5 -6
  37. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/mesh/serialization.rs +2 -2
  38. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/mesh.rs +118 -21
  39. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/plane3.rs +1 -2
  40. engeom-0.2.1/engeom/src/geom3/point_cloud.rs +299 -0
  41. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3.rs +5 -2
  42. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/io.rs +9 -2
  43. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/lib.rs +4 -2
  44. engeom-0.2.1/engeom/src/metrology/dimension.rs +40 -0
  45. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/metrology/line_profiles.rs +3 -5
  46. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/metrology/tolerance.rs +1 -1
  47. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/metrology/tolerance_map.rs +3 -5
  48. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/metrology.rs +3 -0
  49. {engeom-0.1.1 → engeom-0.2.1}/pyproject.toml +3 -0
  50. engeom-0.2.1/python/engeom/airfoil/__init__.py +5 -0
  51. engeom-0.2.1/python/engeom/airfoil.pyi +334 -0
  52. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/align.pyi +2 -2
  53. engeom-0.2.1/python/engeom/engeom.pyi +8 -0
  54. engeom-0.2.1/python/engeom/geom2.pyi +734 -0
  55. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/geom3.pyi +359 -19
  56. engeom-0.2.1/python/engeom/matplotlib.py +240 -0
  57. engeom-0.2.1/python/engeom/metrology/__init__.py +5 -0
  58. engeom-0.2.1/python/engeom/metrology.pyi +32 -0
  59. engeom-0.2.1/python/engeom/pyvista.py +64 -0
  60. engeom-0.2.1/python/tests/test_geom2_simple.py +85 -0
  61. engeom-0.2.1/src/airfoil.rs +400 -0
  62. {engeom-0.1.1 → engeom-0.2.1}/src/alignments.rs +4 -4
  63. engeom-0.2.1/src/bounding.rs +150 -0
  64. engeom-0.2.1/src/common.rs +51 -0
  65. {engeom-0.1.1 → engeom-0.2.1}/src/conversions.rs +30 -1
  66. engeom-0.2.1/src/geom2.rs +926 -0
  67. {engeom-0.1.1 → engeom-0.2.1}/src/geom3.rs +328 -16
  68. engeom-0.2.1/src/lib.rs +113 -0
  69. engeom-0.2.1/src/mesh.rs +181 -0
  70. engeom-0.2.1/src/metrology.rs +62 -0
  71. {engeom-0.1.1 → engeom-0.2.1}/src/svd_basis.rs +3 -3
  72. engeom-0.1.1/engeom/src/airfoil.rs +0 -335
  73. engeom-0.1.1/engeom/src/common/indices.rs +0 -9
  74. engeom-0.1.1/engeom/src/geom2/kd_tree2.rs +0 -35
  75. engeom-0.1.1/engeom/src/geom3/kd_tree3.rs +0 -46
  76. engeom-0.1.1/engeom/src/geom3/points.rs +0 -19
  77. engeom-0.1.1/python/engeom/engeom.pyi +0 -14
  78. engeom-0.1.1/python/engeom/geom2.pyi +0 -139
  79. engeom-0.1.1/python/engeom/matplotlib.py +0 -44
  80. engeom-0.1.1/python/engeom/pyvista.py +0 -26
  81. engeom-0.1.1/src/common.rs +0 -18
  82. engeom-0.1.1/src/geom2.rs +0 -286
  83. engeom-0.1.1/src/isometries.rs +0 -8
  84. engeom-0.1.1/src/lib.rs +0 -68
  85. engeom-0.1.1/src/mesh.rs +0 -150
  86. engeom-0.1.1/src/primitives.rs +0 -3
  87. {engeom-0.1.1 → engeom-0.2.1}/.github/workflows/CI.yml +0 -0
  88. {engeom-0.1.1 → engeom-0.2.1}/.gitignore +0 -0
  89. {engeom-0.1.1 → engeom-0.2.1}/.gitmodules +0 -0
  90. {engeom-0.1.1 → engeom-0.2.1}/engeom/.gitignore +0 -0
  91. {engeom-0.1.1 → engeom-0.2.1}/engeom/README.md +0 -0
  92. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/airfoils/camber.md +0 -0
  93. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/airfoils/overview.md +0 -0
  94. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/common/angles.md +0 -0
  95. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/common/core_space.md +0 -0
  96. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/common/discrete_domain.md +0 -0
  97. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/common/images/surface_point_meas.svg +0 -0
  98. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/common/svd_basis.md +0 -0
  99. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/geom2/alignment.md +0 -0
  100. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/geom2/curve.md +0 -0
  101. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/geom2/point_collections.md +0 -0
  102. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/geom2/shapes.md +0 -0
  103. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/index.md +0 -0
  104. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/javascripts/mathjax.js +0 -0
  105. {engeom-0.1.1 → engeom-0.2.1}/engeom/docs/python_rust.md +0 -0
  106. {engeom-0.1.1 → engeom-0.2.1}/engeom/mkdocs.yml +0 -0
  107. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/align.rs +0 -0
  108. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/convert_2d_3d.rs +0 -0
  109. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/interval.rs +0 -0
  110. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/surface_point.rs +0 -0
  111. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/common/vec_f64.rs +0 -0
  112. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/errors.rs +0 -0
  113. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/func1/common_functions.rs +0 -0
  114. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/func1.rs +0 -0
  115. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/align2.rs +0 -0
  116. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom2/angles2.rs +0 -0
  117. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/align3/jacobian.rs +0 -0
  118. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/align3/multi_param.rs +0 -0
  119. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/geom3/mesh/uv_mapping.rs +0 -0
  120. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/metrology/surface_deviation.rs +0 -0
  121. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/stats.rs +0 -0
  122. {engeom-0.1.1 → engeom-0.2.1}/engeom/src/utility.rs +0 -0
  123. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/__init__.py +0 -0
  124. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/align/__init__.py +0 -0
  125. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/geom2/__init__.py +0 -0
  126. {engeom-0.1.1 → engeom-0.2.1}/python/engeom/geom3/__init__.py +0 -0
  127. {engeom-0.1.1 → engeom-0.2.1}/python/tests/test_all.py +0 -0
@@ -1,6 +1,6 @@
1
1
  # This file is automatically @generated by Cargo.
2
2
  # It is not intended for manual editing.
3
- version = 3
3
+ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "ahash"
@@ -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.1.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.2.15"
245
+ version = "0.3.1"
205
246
  source = "registry+https://github.com/rust-lang/crates.io-index"
206
- checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
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 = "4.2.1"
338
+ version = "5.0.3"
297
339
  source = "registry+https://github.com/rust-lang/crates.io-index"
298
- checksum = "60c5fcd3044b774e2c80a502b2387b75d1baa95e99b2bceeb5db00f2e2d27fe9"
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.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.8.5"
745
+ version = "0.9.0"
700
746
  source = "registry+https://github.com/rust-lang/crates.io-index"
701
- checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
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.3.1"
756
+ version = "0.9.0"
711
757
  source = "registry+https://github.com/rust-lang/crates.io-index"
712
- checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
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.6.4"
766
+ version = "0.9.0"
721
767
  source = "registry+https://github.com/rust-lang/crates.io-index"
722
- checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
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.11.0+wasi-snapshot-preview1"
1104
+ version = "0.13.3+wasi-0.2.2"
1058
1105
  source = "registry+https://github.com/rust-lang/crates.io-index"
1059
- checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
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.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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: engeom
3
- Version: 0.1.1
3
+ Version: 0.2.1
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -1,6 +1,6 @@
1
1
  # This file is automatically @generated by Cargo.
2
2
  # It is not intended for manual editing.
3
- version = 3
3
+ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "ahash"
@@ -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.1.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.3"
372
+ version = "0.8.4"
332
373
  source = "registry+https://github.com/rust-lang/crates.io-index"
333
- checksum = "dbb949699c3e4df3a183b1d2142cb24277057055ed23c68ed58894f76c517223"
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.2.11"
385
+ version = "0.3.1"
345
386
  source = "registry+https://github.com/rust-lang/crates.io-index"
346
- checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
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 = "4.2.1"
507
+ version = "5.0.3"
466
508
  source = "registry+https://github.com/rust-lang/crates.io-index"
467
- checksum = "60c5fcd3044b774e2c80a502b2387b75d1baa95e99b2bceeb5db00f2e2d27fe9"
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.151"
551
+ version = "0.2.169"
507
552
  source = "registry+https://github.com/rust-lang/crates.io-index"
508
- checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
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.17"
659
+ version = "0.2.19"
615
660
  source = "registry+https://github.com/rust-lang/crates.io-index"
616
- checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
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.8.5"
813
+ version = "0.9.0"
769
814
  source = "registry+https://github.com/rust-lang/crates.io-index"
770
- checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
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.3.1"
824
+ version = "0.9.0"
780
825
  source = "registry+https://github.com/rust-lang/crates.io-index"
781
- checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
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.6.4"
834
+ version = "0.9.0"
790
835
  source = "registry+https://github.com/rust-lang/crates.io-index"
791
- checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
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.8.0"
850
+ version = "1.10.0"
805
851
  source = "registry+https://github.com/rust-lang/crates.io-index"
806
- checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
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.0"
860
+ version = "1.12.1"
815
861
  source = "registry+https://github.com/rust-lang/crates.io-index"
816
- checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
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.2"
1072
+ version = "0.8.3"
1027
1073
  source = "registry+https://github.com/rust-lang/crates.io-index"
1028
- checksum = "48e9d886254ce41380acd1bd72a7e2c22862607a99af4bb2380b05deb6d89c83"
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.11.0+wasi-snapshot-preview1"
1263
+ version = "0.13.3+wasi-0.2.2"
1218
1264
  source = "registry+https://github.com/rust-lang/crates.io-index"
1219
- checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
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.1.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.7.0"
16
+ rayon = "1.10.0"
17
17
  levenberg-marquardt = "0.14.0"
18
- rand = "0.8.5"
19
- kiddo = "4.2.1"
20
- stl_io = {version= "0.8.2", optional=true}
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.0"
24
+ test-case = "3.3.1"
25
25
  approx = "0.5.1"
26
26
  criterion = "0.5.1"
27
- rand = "0.8.5"
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
- /// existing circles. This value will default to 1e-3 if not specified.
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.upper, &last_station.lower);
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
- /// algorithm will advance.
184
+ /// algorithm will advance.
159
185
  /// * `tol`: an optional tolerance value which will determine when to add new circles between the
160
- /// existing circles. This value will default to 1e-3 if not specified.
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(