Skip to content

Commit 6aa8b60

Browse files
authored
Merge pull request #369 from raysect/development
Hotfix before release 0.7.0
2 parents 35da710 + 57aa7b3 commit 6aa8b60

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

raysect/optical/observer/imaging/orthographic.pyx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ cdef class OrthographicCamera(Observer2D):
6767
pipelines = pipelines or [RGBPipeline2D()]
6868
frame_sampler = frame_sampler or FullFrameSampler2D()
6969

70+
self._width = 1.0 # initial value to prevent undefined behaviour when setting pixels for the first time before width is set
71+
7072
super().__init__(pixels, frame_sampler, pipelines, parent=parent, transform=transform, name=name)
7173

7274
self.sensitivity = sensitivity or 1.0
@@ -89,6 +91,28 @@ cdef class OrthographicCamera(Observer2D):
8991
self._width = width
9092
self._update_image_geometry()
9193

94+
@property
95+
def pixels(self):
96+
"""
97+
Tuple describing the pixel dimensions for this observer (nx, ny), i.e. (512, 512).
98+
99+
:rtype: tuple
100+
"""
101+
return self._pixels
102+
103+
@pixels.setter
104+
def pixels(self, value):
105+
pixels = tuple(value)
106+
if len(pixels) != 2:
107+
raise ValueError("Pixels must be a 2 element tuple defining the x and y resolution.")
108+
x, y = pixels
109+
if x <= 0:
110+
raise ValueError("Number of x pixels must be greater than 0.")
111+
if y <= 0:
112+
raise ValueError("Number of y pixels must be greater than 0.")
113+
self._pixels = pixels
114+
self._update_image_geometry()
115+
92116
@property
93117
def sensitivity(self):
94118
"""

raysect/optical/observer/imaging/pinhole.pyx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ cdef class PinholeCamera(Observer2D):
8484
pipelines = pipelines or [RGBPipeline2D()]
8585
frame_sampler = frame_sampler or FullFrameSampler2D()
8686

87+
self._fov = 45 # initial value to prevent undefined behaviour when setting pixels for the first time before fov is set
88+
8789
super().__init__(pixels, frame_sampler, pipelines, parent=parent, transform=transform, name=name)
8890

8991
# note that the fov property triggers a call to _update_image_geometry()
@@ -106,6 +108,28 @@ cdef class PinholeCamera(Observer2D):
106108
self._fov = value
107109
self._update_image_geometry()
108110

111+
@property
112+
def pixels(self):
113+
"""
114+
Tuple describing the pixel dimensions for this observer (nx, ny), i.e. (512, 512).
115+
116+
:rtype: tuple
117+
"""
118+
return self._pixels
119+
120+
@pixels.setter
121+
def pixels(self, value):
122+
pixels = tuple(value)
123+
if len(pixels) != 2:
124+
raise ValueError("Pixels must be a 2 element tuple defining the x and y resolution.")
125+
x, y = pixels
126+
if x <= 0:
127+
raise ValueError("Number of x pixels must be greater than 0.")
128+
if y <= 0:
129+
raise ValueError("Number of y pixels must be greater than 0.")
130+
self._pixels = pixels
131+
self._update_image_geometry()
132+
109133
@property
110134
def sensitivity(self):
111135
"""

0 commit comments

Comments
 (0)