ncca-ngl 0.3.4__py3-none-any.whl → 0.3.5__py3-none-any.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.
ncca/ngl/util.py
CHANGED
|
@@ -154,3 +154,12 @@ def calc_normal(p1, p2, p3):
|
|
|
154
154
|
normal.normalize()
|
|
155
155
|
|
|
156
156
|
return normal
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def hash_combine(seed, h):
|
|
160
|
+
# emulate the NGL C++ combine: seed ^= h + 0x9e3779b9 + (seed<<6) + (seed>>2)
|
|
161
|
+
seed = (seed + 0x9E3779B9 + ((seed << 6) & 0xFFFFFFFFFFFFFFFF) + (seed >> 2)) & 0xFFFFFFFFFFFFFFFF
|
|
162
|
+
seed ^= h
|
|
163
|
+
return seed
|
|
164
|
+
|
|
165
|
+
|
ncca/ngl/vec2.py
CHANGED
|
@@ -7,7 +7,7 @@ import math
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
|
|
10
|
-
from .util import clamp
|
|
10
|
+
from .util import clamp, hash_combine
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class Vec2:
|
|
@@ -44,6 +44,15 @@ class Vec2:
|
|
|
44
44
|
yield self.x
|
|
45
45
|
yield self.y
|
|
46
46
|
|
|
47
|
+
def __hash__(self):
|
|
48
|
+
# Use 32-bit float element hashes, then combine
|
|
49
|
+
seed = 0
|
|
50
|
+
for v in (self.x, self.y):
|
|
51
|
+
# ensure 32-bit float semantics
|
|
52
|
+
h = hash(float(np.float32(v)))
|
|
53
|
+
seed = hash_combine(seed, h)
|
|
54
|
+
return seed
|
|
55
|
+
|
|
47
56
|
def copy(self) -> "Vec2":
|
|
48
57
|
"""
|
|
49
58
|
Create a copy of the vector.
|
ncca/ngl/vec3.py
CHANGED
|
@@ -7,7 +7,7 @@ import math
|
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
|
|
10
|
-
from .util import clamp
|
|
10
|
+
from .util import clamp, hash_combine
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class Vec3:
|
|
@@ -39,6 +39,15 @@ class Vec3:
|
|
|
39
39
|
def sizeof(cls):
|
|
40
40
|
return 3 * ctypes.sizeof(ctypes.c_float)
|
|
41
41
|
|
|
42
|
+
def __hash__(self):
|
|
43
|
+
# Use 32-bit float element hashes, then combine
|
|
44
|
+
seed = 0
|
|
45
|
+
for v in (self.x, self.y, self.z):
|
|
46
|
+
# ensure 32-bit float semantics
|
|
47
|
+
h = hash(float(np.float32(v)))
|
|
48
|
+
seed = hash_combine(seed, h)
|
|
49
|
+
return seed
|
|
50
|
+
|
|
42
51
|
def __iter__(self):
|
|
43
52
|
"""
|
|
44
53
|
Make the Vec3 class iterable.
|
ncca/ngl/vec4.py
CHANGED
|
@@ -8,6 +8,7 @@ import math
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
|
|
10
10
|
from .log import logger
|
|
11
|
+
from .util import hash_combine
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class Vec4:
|
|
@@ -73,6 +74,15 @@ class Vec4:
|
|
|
73
74
|
"""
|
|
74
75
|
return Vec4(self.x, self.y, self.z, self.w)
|
|
75
76
|
|
|
77
|
+
def __hash__(self):
|
|
78
|
+
# Use 32-bit float element hashes, then combine
|
|
79
|
+
seed = 0
|
|
80
|
+
for v in (self.x, self.y, self.z, self.w):
|
|
81
|
+
# ensure 32-bit float semantics
|
|
82
|
+
h = hash(float(np.float32(v)))
|
|
83
|
+
seed = hash_combine(seed, h)
|
|
84
|
+
return seed
|
|
85
|
+
|
|
76
86
|
def __add__(self, rhs):
|
|
77
87
|
"return a+b vector addition"
|
|
78
88
|
r = Vec4()
|
|
@@ -53,13 +53,13 @@ ncca/ngl/simple_vao.py,sha256=jfU2O3yliaM6iWNvfcRbjQ6o2_IVSPrOR3GthDiul6Q,1419
|
|
|
53
53
|
ncca/ngl/text.py,sha256=yWNfKHnuWn0bxbwhW1H-EkRZ7bEM9DAyjES16cxTnME,13608
|
|
54
54
|
ncca/ngl/texture.py,sha256=OgBBEItgUDohCsVWgmjEWcQWBJaXl9w070PTOOywPx4,2303
|
|
55
55
|
ncca/ngl/transform.py,sha256=_PibgtFoU_exfvQUWucmts0WF5OreSTNbftvSa3zT8g,2938
|
|
56
|
-
ncca/ngl/util.py,sha256=
|
|
56
|
+
ncca/ngl/util.py,sha256=HAr_Xgj7r48OY3m3xP5HBZgyDFHQwv4qwffguViP3Cw,4618
|
|
57
57
|
ncca/ngl/vao_factory.py,sha256=v87VfrUMaoqcsE-CS9kM7h5Fyk_e0LGl_iA6xqaomPg,930
|
|
58
|
-
ncca/ngl/vec2.py,sha256=
|
|
58
|
+
ncca/ngl/vec2.py,sha256=4Obw_CK5uwdG9LkAVR6zBV9MkTyD-GE4AwpfaLcGLZ0,10531
|
|
59
59
|
ncca/ngl/vec2_array.py,sha256=7QRgXh75fORsmNnSnNxNQWk6_rnDgfmRX3tmJZ4ES9E,3420
|
|
60
|
-
ncca/ngl/vec3.py,sha256=
|
|
60
|
+
ncca/ngl/vec3.py,sha256=2i-QXJ-VlhLw60WlGRf3mUv5zyOa1DQBkSV6oATiXLI,12578
|
|
61
61
|
ncca/ngl/vec3_array.py,sha256=fLRC8k0TwcaU7CnR2GmJ0prud4dcvvUX0JTbQH_2W3Y,3535
|
|
62
|
-
ncca/ngl/vec4.py,sha256=
|
|
62
|
+
ncca/ngl/vec4.py,sha256=81kFd3rDFTw4caKzRz9EzZ-tQzAcWv_1JGx0CKTfujQ,7079
|
|
63
63
|
ncca/ngl/vec4_array.py,sha256=PSJXfG0g2AT4oQCLHiVAP6EC5n7vMXRQy0N1rGvv1iw,3426
|
|
64
64
|
ncca/ngl/widgets/NGLDebug.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
65
|
ncca/ngl/widgets/__init__.py,sha256=KBrwCwgDLIl-eAp0Q5HQcmNkfZ9q6waPC_4A8-g9PG0,413
|
|
@@ -77,6 +77,6 @@ ncca/ngl/widgets/transformwidget.py,sha256=U5pDZN_uhtBDv0BX28J7_fa1AGg8vc8Q2uG70
|
|
|
77
77
|
ncca/ngl/widgets/vec2widget.py,sha256=w4GqwuiNewc2UI5PrSn6ZZYEaB_cxkpxGgrpMQ82WsM,4330
|
|
78
78
|
ncca/ngl/widgets/vec3widget.py,sha256=PnmqdQ1j77v0PQC-p4lT3mTQd_Qi2Iwv9XzSP1Mpa7M,4934
|
|
79
79
|
ncca/ngl/widgets/vec4widget.py,sha256=mT7c5paDaRxn-vSv7lbffg7isyD8T-6sUxOUMqJXBZs,5631
|
|
80
|
-
ncca_ngl-0.3.
|
|
81
|
-
ncca_ngl-0.3.
|
|
82
|
-
ncca_ngl-0.3.
|
|
80
|
+
ncca_ngl-0.3.5.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
81
|
+
ncca_ngl-0.3.5.dist-info/METADATA,sha256=ypLb9CnfpTInsKt3q9g76OVDrccixIEzKOHhly8ibkY,1596
|
|
82
|
+
ncca_ngl-0.3.5.dist-info/RECORD,,
|
|
File without changes
|