ldpk
Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 1234]
 Cldpk::box< VEC2 >A simple box class for double precision points in 2d. We will extend this as needed
 Cexception
 Cldpk::error_baseBase class for errors
 Cldpk::extender_base< VEC2, MAT2 >Base class of all extenders The concept of extenders as turned out to be useful in the new-style distortion models which compensate for beam-splitter effects or rotated anamorphic lenses. Essentially, an extender maps from vec2_type to vec2_type. It also provides the inverse mapping. Up to now, all extenders have a simple representation as a 2x2-matrix (i.e. they are linear maps), but it might be necessary in the future to extend this to affine transformations
 Cldpk::cylindric_extender< VEC2, MAT2 >
 Cldpk::cylindric_extender_2< VEC2, MAT2 >"Symmetric" version. Scaling by sqrt(1+b) in para-direction and 1/sqrt(1+b) in ortho-direction. The important thing is, that we have turned an almost-symmetry into a perfect symmetry: phi -> phi + 90deg, b -> 1/b. The drawback is, that this models the curved beam splitter only if focal length is corrected slightly, by a factor sqrt(1+b). Nevertheless we are using this model in "3DE4 Radial - Standard, Degree 4"
 Cldpk::linear_extender< VEC2, MAT2 >A general linear extender, based on a 2x2-matrix
 Cldpk::rotation_extender< VEC2, MAT2 >The rotation extender simply rotates the incident ray around the optical axis. We need this e.g. for the new-style squeeze-rotation anamorphic distortion model
 Cldpk::squeeze_x_extender< VEC2, MAT2 >The squeeze-x/y-extender scales the optical-axis-perpendicular coordinates of the incident ray towards the optical axis, either in x or in y direction
 Cldpk::squeeze_y_extender< VEC2, MAT2 >
 Cldpk::extender_base< vec2_type, mat2_type >
 Cldpk::cylindric_extender_2< vec2_type, mat2_type >
 Cldpk::linear_extender< vec2_type, mat2_type >
 Cldpk::rotation_extender< vec2_type, mat2_type >
 Cldpk::squeeze_x_extender< vec2_type, mat2_type >
 Cldpk::squeeze_y_extender< vec2_type, mat2_type >
 Cldpk::extendible_vector< T >
 Cldpk::cache_line_buffer< T >
 Cldpk::extendible_vector< cache_line_buffer_type * >
 Cldpk::highest_bit_ct< N >Compile-Time computations, needed by ldpk::power_ct
 Cldpk::highest_bit_ct< 1 >
 CIop
 Cnuke_ld_3de4_baseThe baseclass for Nuke plugins around LDPK-based lens distortion models. In order to implement a Nuke plugin, derive from this class
 Cldpk::line_cache< T >The class is thread-safe in the following sense:
 Cldpk::line_cache< nuke_ld_lut_entry >
 Cldpk::line_ref< T >In Multithreading, more than one thread may work on the same line reading and writing, however resizing is not allowed
 Cldpk::lookup_table< VEC2 >Use your own two-dimensional double-valued vector type as VEC2
 Cldpk::lookup_table< vec2_type >
 Cldpk::mat2dA class for double-valued 2x2-matrices. The matrix class for ldpk::vec2d
 Cldpk::model_parserA class for reading distortion model parameters from a stream. Might be helpful for testing. Just another nice-to-have..
 Cnuke_ld_lut_entry
 Cldpk::plugin_loaderA simple plugin loader for testing and debugging purposes
 Cldpk::power_ct< T, N >Computing N powers of a given number, where N is a compile-time constant
 Cldpk::power_ct< T, 1 >
 Cldpk::power_ct< T, 2 >
 Cldpk::table_generatorGenerate table data from plugin for visualization
 Ctde4_ld_pluginLens Distortion Plugin Base Class
 Cldpk::ldp_builtin< ldpk::vec2d, ldpk::mat2d >
 Cldpk::ldp_builtin< VEC2, MAT2 >This class handles the built-in parameter and the lookup table. You may find it useful for your own distortion model, since it implements the built-in parameters and the lookup table mechanism. But in contrast to tde4_ld_plugin it's not stringent to use it from a technical point of view. Alternatively you can implement all this in your plugin class
 Ctde4_ldp_py_wrapper
 Cunary_function
 Cldpk::generic_distortion_base< VEC2, MAT2, 3 >
 Cldpk::generic_distortion_base< VEC2, MAT2, 5 >
 Cldpk::generic_distortion_base< VEC2, MAT2, 6 >
 Cldpk::generic_distortion_base< VEC2, MAT2,(4+2)*(4+4)/4-2 >
 Cldpk::generic_distortion_base< VEC2, MAT2,(6+2)*(6+4)/4-2 >
 Cldpk::generic_distortion_base< VEC2, MAT2,(N+2)*(N+4)/4-2 >
 Cldpk::generic_distortion_base< vec2_type, mat2_type, 3 >
 Cldpk::generic_distortion_base< vec2_type, mat2_type, 5 >
 Cldpk::generic_distortion_base< vec2_type, mat2_type, 6 >
 Cldpk::generic_distortion_base< vec2_type, mat2_type, N >
 Cldpk::generic_distortion_base< vec2_type, mat2_type,(N+2)*(N+4)/4-2 >
 Cldpk::generic_radial_distortion_1d< 4 >
 Cldpk::generic_distortion_base< VEC2, MAT2, N >Base class for a distortion model with N parameters. You may find it useful to derive your own distortion model class from this one. It contains methods for inverting the distortion model function. We derive this class from the standard unary function class in order to get a well-defined function object
 Cldpk::generic_radial_distortion_1d< N >A polynomial model with N coefficients for radially symmetric lenses. This class contains the model for normalized coordinates with diagonal radius = 1. Lens center is at (0,0)
 Cldpk::vec2dA class for two-dimensional double-valued vectors We have added this class and ldpk::mat2d in order to deliver a self-consistent kit. You may use this one or your own vector and matrix classes, at your choice. If you prefer your own classes, it will be necessary to add a handful of functions like dot(), dotsq(), norm2() for vec2d and invert() for mat2d, which provide standard functions, but do not have standardized nomenclature