Curve::Foucault class reference
[Core module]
Declaration
#include <Goptical/Curve/Foucault>
namespace Goptical {
namespace Curve {
class Foucault;
};
};
This class is a member of the Curve namespace.
Inheritance
Description
This class allows definition of a rotationally symmetric curve from a set of Foucault test data. Fixed and moving light sources are supported.
Curve fitting can be used to find Foucault test readings from any other rotationally symmetric curve.
Foucault test data are reduced using numerical integration of a differential equation to compute sagitta from slopes.
Foucault data reduction algorithm based on "ATM Mirror Mathematics" http://home.earthlink.net/~burrjaw/atm/atm_math.lwp/atm_math.htm
Couder mask theory and formulas developed by Nils Olof Carlin http://www.atmsite.org/contrib/Carlin/couder/
Members
See also the full member list section for this class.
Inherited members
- 2 members inherited from CurveRoc
- 9 members inherited from Rotational
Functions
- Foucault(double roc)
- ~Foucault()
- unsigned int add_couder_zones(double hole_radius, unsigned int count = [...], std::vector<double> *edge = [...])
- void add_reading(double zone_radius, double knife_offset = [...])
- unsigned int add_uniform_zones(double hole_radius, unsigned int count)
- void clear()
- virtual double derivative(double r) const
- void fit(const Rotational &c)
- double get_radius() const
- const std::pair<double, double> get_reading(unsigned int zone_number) const
- unsigned int get_zones_count() const
- virtual double sagitta(double r) const
- void set_fixed_source(double source_to_surface)
- void set_knife_offset(unsigned int zone_number, double knife_offset)
- void set_moving_source(double source_offset = [...])
- void set_ode_stepsize(double step)
- void set_radius(double radius)
Members detail
Create an empty foucault curve with no reading with the given radius of curvature
No documentation available
unsigned int add_couder_zones(double hole_radius, unsigned int count = 0, std::vector<double> *edge = 0)
Clear current zones and add zones readings to locations suited for testing with a couder mask (as described on Nils Olof Carlin page). Zone count may be guessed if zero, provided that radius has been properly set before. Knife edge reading (offset from radius of curvature) is set to 0 for all zones.
- edge: Couder zones edges will be saved here if != NULL.
The return value is Zone count
Define a new zone at given zone radius and update knife edge reading (offset from radius of curvature)
Clear current zones and add equally spaced zones readings. Knife edge reading (offset from radius of curvature) is set to 0 for all zones.
The return value is New zones count
Clear all readings and zones
This virtual function overrides the derivative
virtual function defined in the Rotational
base abstract class.
Documentation inherited from base class:
Get curve derivative at specified distance from origin.
- r: distance from curve origin (0, 0)
void fit(const Rotational &c)
Switch to moving source test and update knife edge readings of previously defined zone to fit provided rotationally symmetric curve. This means simulating a foucault test of the given curve using existing zones.
Get surface radius.
const std::pair<double, double> get_reading(unsigned int zone_number) const
Get reading data for a given zone number.
The return value is std::pair with zone radius and knife offset
Get currently defined zones/readings count
This virtual function implements the sagitta
pure function declared in the Rotational
base abstract class.
Documentation inherited from base class:
Get curve sagitta at specified distance from origin.
- r: distance from curve origin (0, 0)
Set fixed light source foucault test. This clear all readings and zones.
- source_to_surface: Distance between surface and light source along the optical axis.
Set knife edge reading of a previously defined zone
Set moving light source foucault test. This clear all readings and zones.
- source_offset: Distance between knife edge and light source along optical axis.
Set surface integration (ODE) algorithm step size, default is 1mm
Set surface radius. Effective surface radius must be known to let the surface integration algorithm run up to a given limit. Sagitta and gradient values above the define radius won't be accurate.
Radius is adjusted to max zone radius + 10% when adding readings.