Module: Tracksperanto::UVCoordinates
- Included in:
- Export::SynthEyes, Import::Syntheyes, Tool::LensDisto
- Defined in:
- lib/tracksperanto/uv_coordinates.rb
Overview
For Syntheyes, zero is at the optical center of the image, and goes positive right and up. The corners get the [-1..1] coordinates respectively. Since Tracksperanto works in absolute pixels we need to convert to and from these cords. Note that Syntheyes actually assumes the center of the first pixel to be at -1,1 so a small adjustment is necessary to maintain subpixel accuracy.
Instance Method Summary collapse
-
#absolute_to_uv(abs_x, abs_y, w, h) ⇒ Object
Convert absolute X and Y values off the BL corner into Syntheyes UV coordinates.
-
#convert_from_uv(uv_value, absolute_side) ⇒ Object
Convert Syntheyes UV value into absolute pixel value off the BL corner.
-
#convert_to_uv(abs_value, absolute_side) ⇒ Object
Convert absolute pixel value off the BL corner into Syntheyes UV coordinate.
Instance Method Details
#absolute_to_uv(abs_x, abs_y, w, h) ⇒ Object
Convert absolute X and Y values off the BL corner into Syntheyes UV coordinates
9 10 11 |
# File 'lib/tracksperanto/uv_coordinates.rb', line 9 def absolute_to_uv(abs_x, abs_y, w, h) [convert_to_uv(abs_x, w), convert_to_uv(abs_y, h) * -1] end |
#convert_from_uv(uv_value, absolute_side) ⇒ Object
Convert Syntheyes UV value into absolute pixel value off the BL corner
19 20 21 22 23 |
# File 'lib/tracksperanto/uv_coordinates.rb', line 19 def convert_from_uv(uv_value, absolute_side) # Account for the fact that Syntheyes assumes the # pixel values to be at the center of the pixel abs_value = (((uv_value.to_f / 2.0) + 0.5) * (absolute_side.to_f - 1)) + 0.5 end |
#convert_to_uv(abs_value, absolute_side) ⇒ Object
Convert absolute pixel value off the BL corner into Syntheyes UV coordinate
14 15 16 |
# File 'lib/tracksperanto/uv_coordinates.rb', line 14 def convert_to_uv(abs_value, absolute_side) uv_value = (((abs_value.to_f - 0.5) / (absolute_side.to_f - 1)) - 0.5) * 2.0 end |