@@ -93,8 +93,10 @@ impl CameraIntrinsics {
9393 film_back : CameraFilmBack < f64 > ,
9494 ) -> Self {
9595 // Normalize focal lengths by film back dimensions.
96- let focal_length_x = focal_length_mm. value ( ) / film_back. width . value ( ) ;
97- let focal_length_y = focal_length_mm. value ( ) / film_back. height . value ( ) ;
96+ let focal_length_x =
97+ focal_length_mm. value ( ) / film_back. width_mm . value ( ) ;
98+ let focal_length_y =
99+ focal_length_mm. value ( ) / film_back. height_mm . value ( ) ;
98100
99101 // Convert lens center from film back coordinates to NDC coordinates.
100102 //
@@ -104,10 +106,10 @@ impl CameraIntrinsics {
104106 // normalize by film back dimensions and scale by 2.
105107 let principal_point = NdcPoint2 :: new (
106108 NdcValue :: new (
107- ( 2.0 * lens_center_x_mm. value ( ) ) / film_back. width . value ( ) ,
109+ ( 2.0 * lens_center_x_mm. value ( ) ) / film_back. width_mm . value ( ) ,
108110 ) ,
109111 NdcValue :: new (
110- ( 2.0 * lens_center_y_mm. value ( ) ) / film_back. height . value ( ) ,
112+ ( 2.0 * lens_center_y_mm. value ( ) ) / film_back. height_mm . value ( ) ,
111113 ) ,
112114 ) ;
113115
@@ -160,19 +162,21 @@ impl CameraIntrinsics {
160162 // Convert normalized focal length back to millimeters.
161163 // We use focal_length_x since both should give the same physical focal length.
162164 let focal_length_mm = MillimeterUnit :: new (
163- self . focal_length_x * self . film_back . width . value ( ) ,
165+ self . focal_length_x * self . film_back . width_mm . value ( ) ,
164166 ) ;
165167
166168 // Convert NDC principal point back to lens center coordinates.
167169 //
168170 // In NDC space, (0,0) is center with range [-1,1], so we
169171 // scale by film back dimensions and divide by 2.
170172 let lens_center_x_mm = MillimeterUnit :: new (
171- self . principal_point . x . value ( ) * self . film_back . width . value ( ) * 0.5 ,
173+ self . principal_point . x . value ( )
174+ * self . film_back . width_mm . value ( )
175+ * 0.5 ,
172176 ) ;
173177 let lens_center_y_mm = MillimeterUnit :: new (
174178 self . principal_point . y . value ( )
175- * self . film_back . height . value ( )
179+ * self . film_back . height_mm . value ( )
176180 * 0.5 ,
177181 ) ;
178182
@@ -184,15 +188,19 @@ impl CameraIntrinsics {
184188 /// # Returns
185189 /// Horizontal focal length in millimeters.
186190 pub fn horizontal_focal_length_mm ( & self ) -> MillimeterUnit < f64 > {
187- MillimeterUnit :: new ( self . focal_length_x * self . film_back . width . value ( ) )
191+ MillimeterUnit :: new (
192+ self . focal_length_x * self . film_back . width_mm . value ( ) ,
193+ )
188194 }
189195
190196 /// Calculate the vertical focal length in millimeters.
191197 ///
192198 /// # Returns
193199 /// Vertical focal length in millimeters.
194200 pub fn vertical_focal_length_mm ( & self ) -> MillimeterUnit < f64 > {
195- MillimeterUnit :: new ( self . focal_length_y * self . film_back . height . value ( ) )
201+ MillimeterUnit :: new (
202+ self . focal_length_y * self . film_back . height_mm . value ( ) ,
203+ )
196204 }
197205
198206 /// Calculate the horizontal field of view in radians.
@@ -205,8 +213,8 @@ impl CameraIntrinsics {
205213 // focal_length_x is normalized by width, so we need the actual focal
206214 // length in mm.
207215 let focal_length_mm =
208- self . focal_length_x * self . film_back . width . value ( ) ;
209- 2.0 * ( self . film_back . width . value ( ) / ( 2.0 * focal_length_mm) ) . atan ( )
216+ self . focal_length_x * self . film_back . width_mm . value ( ) ;
217+ 2.0 * ( self . film_back . width_mm . value ( ) / ( 2.0 * focal_length_mm) ) . atan ( )
210218 }
211219
212220 /// Calculate the horizontal field of view in degrees.
@@ -224,8 +232,9 @@ impl CameraIntrinsics {
224232 pub fn vertical_fov_radians ( & self ) -> f64 {
225233 // FoV = 2 * arctan(sensor_height / (2 * focal_length))
226234 let focal_length_mm =
227- self . focal_length_y * self . film_back . height . value ( ) ;
228- 2.0 * ( self . film_back . height . value ( ) / ( 2.0 * focal_length_mm) ) . atan ( )
235+ self . focal_length_y * self . film_back . height_mm . value ( ) ;
236+ 2.0 * ( self . film_back . height_mm . value ( ) / ( 2.0 * focal_length_mm) )
237+ . atan ( )
229238 }
230239
231240 /// Calculate the vertical field of view in degrees.
@@ -242,13 +251,13 @@ impl CameraIntrinsics {
242251 /// Diagonal field of view angle in radians
243252 pub fn diagonal_fov_radians ( & self ) -> f64 {
244253 // Calculate diagonal sensor dimension.
245- let diagonal_mm = ( self . film_back . width . value ( ) . powi ( 2 )
246- + self . film_back . height . value ( ) . powi ( 2 ) )
254+ let diagonal_mm = ( self . film_back . width_mm . value ( ) . powi ( 2 )
255+ + self . film_back . height_mm . value ( ) . powi ( 2 ) )
247256 . sqrt ( ) ;
248257
249258 // Use horizontal focal length for diagonal calculation.
250259 let focal_length_mm =
251- self . focal_length_x * self . film_back . width . value ( ) ;
260+ self . focal_length_x * self . film_back . width_mm . value ( ) ;
252261 2.0 * ( diagonal_mm / ( 2.0 * focal_length_mm) ) . atan ( )
253262 }
254263
@@ -295,8 +304,8 @@ mod tests {
295304 -0.4 ,
296305 epsilon = 1e-10
297306 ) ;
298- assert_eq ! ( intrinsics. film_back. width . value( ) , 36.0 ) ;
299- assert_eq ! ( intrinsics. film_back. height . value( ) , 24.0 ) ;
307+ assert_eq ! ( intrinsics. film_back. width_mm . value( ) , 36.0 ) ;
308+ assert_eq ! ( intrinsics. film_back. height_mm . value( ) , 24.0 ) ;
300309 }
301310
302311 #[ test]
0 commit comments