ncca-ngl 0.2.6__tar.gz → 0.2.7__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 (66) hide show
  1. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/PKG-INFO +1 -1
  2. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/pyproject.toml +1 -1
  3. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/first_person_camera.py +18 -15
  4. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/prim_data.py +1 -1
  5. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/LICENSE.txt +0 -0
  6. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/.ruff_cache/.gitignore +0 -0
  7. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/.ruff_cache/0.13.0/10564494386971134025 +0 -0
  8. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/.ruff_cache/0.13.0/7783445477288392980 +0 -0
  9. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/.ruff_cache/CACHEDIR.TAG +0 -0
  10. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/NGLDebug.log +0 -0
  11. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/Primitives.npz +0 -0
  12. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/buddah.npy +0 -0
  13. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/bunny.npy +0 -0
  14. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/cube.npy +0 -0
  15. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/dodecahedron.npy +0 -0
  16. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/dragon.npy +0 -0
  17. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/football.npy +0 -0
  18. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/icosahedron.npy +0 -0
  19. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/octahedron.npy +0 -0
  20. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/pack_arrays.py +0 -0
  21. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/teapot.npy +0 -0
  22. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/tetrahedron.npy +0 -0
  23. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/PrimData/troll.npy +0 -0
  24. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/__init__.py +0 -0
  25. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/abstract_vao.py +0 -0
  26. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/base_mesh.py +0 -0
  27. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/base_mesh.pyi +0 -0
  28. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/bbox.py +0 -0
  29. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/bezier_curve.py +0 -0
  30. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/image.py +0 -0
  31. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/log.py +0 -0
  32. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/mat2.py +0 -0
  33. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/mat3.py +0 -0
  34. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/mat4.py +0 -0
  35. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/multi_buffer_vao.py +0 -0
  36. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/obj.py +0 -0
  37. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/plane.py +0 -0
  38. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/primitives.py +0 -0
  39. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/pyside_event_handling_mixin.py +0 -0
  40. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/quaternion.py +0 -0
  41. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/random.py +0 -0
  42. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shader.py +0 -0
  43. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shader_lib.py +0 -0
  44. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shader_program.py +0 -0
  45. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/checker_fragment.glsl +0 -0
  46. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/checker_vertex.glsl +0 -0
  47. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/colour_fragment.glsl +0 -0
  48. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/colour_vertex.glsl +0 -0
  49. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/diffuse_fragment.glsl +0 -0
  50. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/diffuse_vertex.glsl +0 -0
  51. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/text_fragment.glsl +0 -0
  52. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/text_geometry.glsl +0 -0
  53. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/shaders/text_vertex.glsl +0 -0
  54. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/simple_index_vao.py +0 -0
  55. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/simple_vao.py +0 -0
  56. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/text.py +0 -0
  57. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/texture.py +0 -0
  58. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/transform.py +0 -0
  59. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/util.py +0 -0
  60. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vao_factory.py +0 -0
  61. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec2.py +0 -0
  62. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec2_array.py +0 -0
  63. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec3.py +0 -0
  64. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec3_array.py +0 -0
  65. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec4.py +0 -0
  66. {ncca_ngl-0.2.6 → ncca_ngl-0.2.7}/src/ncca/ngl/vec4_array.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ncca-ngl
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: A Python version of the NGL graphics library.
5
5
  Author: Jon Macey
6
6
  Author-email: Jon Macey <jmacey@bournemouth.ac.uk>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ncca-ngl"
3
- version = "0.2.6"
3
+ version = "0.2.7"
4
4
  description = "A Python version of the NGL graphics library."
5
5
  authors = [{ name = "Jon Macey", email = "jmacey@bournemouth.ac.uk" }]
6
6
  requires-python = ">=3.13"
@@ -1,7 +1,7 @@
1
1
  import math
2
2
 
3
3
  from .mat4 import Mat4
4
- from .util import perspective
4
+ from .util import PerspMode, look_at, perspective
5
5
  from .vec3 import Vec3
6
6
 
7
7
 
@@ -32,7 +32,7 @@ class FirstPersonCamera:
32
32
  view (Mat4): The view matrix.
33
33
  """
34
34
 
35
- def __init__(self, eye: Vec3, look: Vec3, up: Vec3, fov: float) -> None:
35
+ def __init__(self, eye: Vec3, look: Vec3, up: Vec3, fov: float, persp_mode: PerspMode = PerspMode.OpenGL) -> None:
36
36
  """
37
37
  Initialize the FirstPersonCamera.
38
38
 
@@ -58,12 +58,9 @@ class FirstPersonCamera:
58
58
  self.aspect: float = 1.2
59
59
  self.fov: float = fov
60
60
  self._update_camera_vectors()
61
- self.projection: Mat4 = self.set_projection(
62
- self.fov, self.aspect, self.near, self.far
63
- )
64
- from .util import look_at
61
+ self._projection: Mat4 = self.set_projection(self.fov, self.aspect, self.near, self.far, persp_mode)
65
62
 
66
- self.view: Mat4 = look_at(self.eye, self.eye + self.front, self.up)
63
+ self._view: Mat4 = look_at(self.eye, self.eye + self.front, self.up)
67
64
 
68
65
  def __str__(self) -> str:
69
66
  return f"Camera {self.eye} {self.look} {self.world_up} {self.fov}"
@@ -71,9 +68,15 @@ class FirstPersonCamera:
71
68
  def __repr__(self) -> str:
72
69
  return f"Camera {self.eye} {self.look} {self.world_up} {self.fov}"
73
70
 
74
- def process_mouse_movement(
75
- self, diffx: float, diffy: float, _constrain_pitch: bool = True
76
- ) -> None:
71
+ @property
72
+ def projection(self) -> Mat4:
73
+ return self._projection
74
+
75
+ @property
76
+ def view(self) -> Mat4:
77
+ return self._view
78
+
79
+ def process_mouse_movement(self, diffx: float, diffy: float, _constrain_pitch: bool = True) -> None:
77
80
  """
78
81
  Process mouse movement to update the camera's direction vectors.
79
82
 
@@ -115,10 +118,10 @@ class FirstPersonCamera:
115
118
  self.front.normalize()
116
119
  from .util import look_at
117
120
 
118
- self.view = look_at(self.eye, self.eye + self.front, self.up)
121
+ self._view = look_at(self.eye, self.eye + self.front, self.up)
119
122
 
120
123
  def set_projection(
121
- self, fov: float, aspect: float, near: float, far: float
124
+ self, fov: float, aspect: float, near: float, far: float, persp_mode: PerspMode = PerspMode.OpenGL
122
125
  ) -> Mat4:
123
126
  """
124
127
  Set the projection matrix for the camera.
@@ -133,7 +136,7 @@ class FirstPersonCamera:
133
136
  Mat4: The projection matrix.
134
137
  """
135
138
 
136
- return perspective(fov, aspect, near, far)
139
+ return perspective(fov, aspect, near, far, persp_mode)
137
140
 
138
141
  def move(self, x: float, y: float, delta: float) -> None:
139
142
  """
@@ -156,7 +159,7 @@ class FirstPersonCamera:
156
159
  Returns:
157
160
  Mat4: The view-projection matrix.
158
161
  """
159
- return self.projection @ self.view
162
+ return self._projection @ self._view
160
163
 
161
164
  def process_mouse_scroll(self, y_offset: float) -> None:
162
165
  """
@@ -171,4 +174,4 @@ class FirstPersonCamera:
171
174
  self.zoom = 1.0
172
175
  if self.zoom >= 45.0:
173
176
  self.zoom = 45.0
174
- self.projection = perspective(self.zoom, self.aspect, self.near, self.far)
177
+ self._projection = perspective(self.zoom, self.aspect, self.near, self.far)
@@ -605,7 +605,7 @@ class PrimData:
605
605
  def primitive(name: Union[str, enum]) -> np.ndarray:
606
606
  prim_folder = Path(__file__).parent / "PrimData"
607
607
  prims = np.load(prim_folder / "Primitives.npz")
608
- if isinstance(name, PrimData):
608
+ if isinstance(name, Prims):
609
609
  name = name.value
610
610
 
611
611
  try:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes