engeom 0.2.8__cp38-abi3-macosx_11_0_arm64.whl → 0.2.9__cp38-abi3-macosx_11_0_arm64.whl

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.
@@ -1,10 +1,13 @@
1
1
  from typing import List, Iterable, Tuple, Union
2
2
  import numpy
3
+
3
4
  from .common import LabelPlace
4
5
  from engeom.geom2 import Curve2, Circle2, Aabb2, Point2, Vector2, SurfacePoint2
6
+ from engeom.geom3 import Vector3, Mesh, Point3
5
7
  from engeom.metrology import Distance2
6
8
 
7
9
  PlotCoords = Union[Point2, Vector2, Iterable[float]]
10
+ PointLike = Union[Point2, Tuple[float, float], Point3]
8
11
 
9
12
  try:
10
13
  from matplotlib.pyplot import Axes, Circle
@@ -273,3 +276,50 @@ def _tuplefy(item: PlotCoords) -> Tuple[float, float]:
273
276
  else:
274
277
  x, y, *_ = item
275
278
  return x, y
279
+
280
+
281
+ class TraceBuilder:
282
+ def __init__(self):
283
+ self.xs = []
284
+ self.ys = []
285
+ self.c = []
286
+
287
+ def bounds(self) -> Aabb2:
288
+ xs = [x for x in self.xs if x is not None]
289
+ ys = [y for y in self.ys if y is not None]
290
+ return Aabb2(
291
+ x_min=min(xs),
292
+ x_max=max(xs),
293
+ y_min=min(ys),
294
+ y_max=max(ys),
295
+ )
296
+
297
+ def add_segment(self, *points: PointLike):
298
+ self.add_points(*points)
299
+ self.add_blank()
300
+
301
+ def add_blank(self):
302
+ self.xs.append(None)
303
+ self.ys.append(None)
304
+ self.c.append(None)
305
+
306
+ def add_points(self, *points: PointLike):
307
+ for x, y, *_ in points:
308
+ self.xs.append(x)
309
+ self.ys.append(y)
310
+
311
+ def add_point_and_color(self, point: PointLike, color: float):
312
+ self.xs.append(point[0])
313
+ self.ys.append(point[1])
314
+ self.c.append(color)
315
+
316
+ def invert_y(self):
317
+ self.ys = [-y if y is not None else None for y in self.ys]
318
+
319
+ @property
320
+ def kwargs(self):
321
+ return dict(x=self.xs, y=self.ys)
322
+
323
+ @property
324
+ def xy(self):
325
+ return self.xs, self.ys
engeom/engeom.abi3.so CHANGED
Binary file
engeom/geom3.pyi CHANGED
@@ -745,6 +745,25 @@ class Mesh:
745
745
  """
746
746
  ...
747
747
 
748
+ @property
749
+ def face_normals(self) -> NDArray[float]:
750
+ """
751
+ Will return an immutable view of the face normals of the mesh as a numpy array of shape (m, 3), where m is the
752
+ number of triangles in the mesh.
753
+ :return: a numpy array of shape (m, 3) containing the normals of the triangles of the mesh.
754
+ """
755
+ ...
756
+
757
+ @property
758
+ def vertex_normals(self) -> NDArray[float]:
759
+ """
760
+ Will return an immutable view of the vertex normals of the mesh as a numpy array of shape (n, 3), where n is the
761
+ number of vertices in the mesh. If a vertex has no faces, the normal will be (0, 0, 0), otherwise the normal
762
+ will have been averaged from the normals of the faces that share the vertex.
763
+ :return: a numpy array of shape (n, 3) containing the normals of the vertices of the mesh.
764
+ """
765
+ ...
766
+
748
767
  @property
749
768
  def faces(self) -> NDArray[numpy.uint32]:
750
769
  """
engeom/plot.py CHANGED
@@ -21,6 +21,6 @@ except ImportError:
21
21
  pass
22
22
 
23
23
  try:
24
- from ._plot.matplotlib import GOM_CMAP, GomColorMap, MatplotlibAxesHelper
24
+ from ._plot.matplotlib import GOM_CMAP, GomColorMap, MatplotlibAxesHelper, TraceBuilder
25
25
  except ImportError:
26
26
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: engeom
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -1,15 +1,15 @@
1
- engeom-0.2.8.dist-info/METADATA,sha256=JEVnOcfRIqLGQ4lLnjmICd0plsKM9yq-GCYZi1K4L1g,494
2
- engeom-0.2.8.dist-info/WHEEL,sha256=KOb2uEsUFKFV_GOdT9ev2YJZGn1-e8xqWy3VUx4M6FQ,102
1
+ engeom-0.2.9.dist-info/METADATA,sha256=cIC-cxGiEWFVrpL6LFpB6eH0mLwaXusvyhT6oth9npc,494
2
+ engeom-0.2.9.dist-info/WHEEL,sha256=KOb2uEsUFKFV_GOdT9ev2YJZGn1-e8xqWy3VUx4M6FQ,102
3
3
  engeom/raster3.pyi,sha256=sBXXYXcDBiDU_OFDQiwa7Q3GcwSiUc4CLy6nJ1MwFqM,790
4
4
  engeom/geom2.pyi,sha256=508YJVNAJcZxEIZcWi4upcGtiZKoRnGtAW7TfTU3b3A,42922
5
- engeom/geom3.pyi,sha256=fcWaBcwVp76enp9aZrpnmVhIDpWxgay8eBauLR9T1Lk,56105
5
+ engeom/geom3.pyi,sha256=EFVmO1VaR5EHQeGR0FZCR-XqXQA9_XUP9kky7o3kovI,57003
6
6
  engeom/geom3/__init__.py,sha256=l8B0iDhJ4YiRbslJLN791XWai2DWrpmZptnzIETMS9g,370
7
7
  engeom/geom2/__init__.py,sha256=JFpiLyROUh6vyakG-7JDSlCMCn4QB2MQ8bz3uVCaAIk,373
8
- engeom/plot.py,sha256=2b81-dW7aKKC1TjoDtRmppFKpzQOia7w6c4T2pExN0E,1065
8
+ engeom/plot.py,sha256=LTqqO-h1EJL6wanM0hB79s9ohWwaCIijMOHVplY3vmc,1079
9
9
  engeom/metrology/__init__.py,sha256=XvEhG8uDm1olWwZHDDrQv9LFP5zXhbsGx27PqRq8WE0,304
10
10
  engeom/airfoil.pyi,sha256=VTeJBoS9Iij7p-92R7jCqzPasHmvAUocyzc6BSx7mvM,23557
11
11
  engeom/_plot/pyvista.py,sha256=COVgiw4XlcbGjiLYE-eJjK_TJgONMGdW54pFsLczFm4,11879
12
- engeom/_plot/matplotlib.py,sha256=tTk4Fu6hDVxP1655koeT9B0JxkoURTr30ZyBV_jzTi8,11643
12
+ engeom/_plot/matplotlib.py,sha256=eqZsm-Lhq2svFSusW6_09T4UuxW9F0hBEbmMj6ZMywI,12934
13
13
  engeom/_plot/__init__.py,sha256=F_KviZtxzZGwfEjjn8Ep46N4UVl8VpFJWBzbBUE_J7A,30
14
14
  engeom/_plot/common.py,sha256=Py78ufN3yi59hPwv21SoGcqyZUJS-_PmK8tlAKgSG7Q,517
15
15
  engeom/airfoil/__init__.py,sha256=gpS9pVepUu90XJ-ePndNupbUMKI0RGxNXPxD9x0iVHY,274
@@ -19,5 +19,5 @@ engeom/align/__init__.py,sha256=SEeMqeqLKqJC73Mg8GwPwd9NwWnl-dcCqJ4rPdh8yyc,196
19
19
  engeom/engeom.pyi,sha256=BtUBtYZ_MX8Xk2x_FyzVxRXjJQIazQ1xscbCLO_Y3HA,1516
20
20
  engeom/metrology.pyi,sha256=9I5un86VB_2gmQBrVYhX8JzILTUADMLB9Em8ttJxrWg,4044
21
21
  engeom/align.pyi,sha256=QCSKrTLkCoaIubcrPU9J-wDZe1lRP0GbPgWZmonXjo0,997
22
- engeom/engeom.abi3.so,sha256=Xnbrdqd-3FXlR9o3681addG4KdhYHT0kY9xRHDGds_g,2691296
23
- engeom-0.2.8.dist-info/RECORD,,
22
+ engeom/engeom.abi3.so,sha256=jtwveIkwJz8P0heXQq73lTogLGA1W21P--bKA38XxVE,2751360
23
+ engeom-0.2.9.dist-info/RECORD,,
File without changes