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  

Functions  

Members detail  

Foucault(double roc)  

Create an empty foucault curve with no reading with the given radius of curvature

~Foucault()  

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

void add_reading(double zone_radius, double knife_offset = 0.0)  

Define a new zone at given zone radius and update knife edge reading (offset from radius of curvature)

unsigned int add_uniform_zones(double hole_radius, unsigned int count)  

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

void clear()  

Clear all readings and zones

virtual double derivative(double r) const  

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.

double get_radius() const  

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

unsigned int get_zones_count() const  

Get currently defined zones/readings count

virtual double sagitta(double r) const  

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)

void set_fixed_source(double source_to_surface)  

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.

void set_knife_offset(unsigned int zone_number, double knife_offset)  

Set knife edge reading of a previously defined zone

void set_moving_source(double source_offset = 0.0)  

Set moving light source foucault test. This clear all readings and zones.

  • source_offset: Distance between knife edge and light source along optical axis.

void set_ode_stepsize(double step)  

Set surface integration (ODE) algorithm step size, default is 1mm

void set_radius(double radius)  

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.

Valid XHTML 1.0 StrictGenerated by diaxen on Sun Jan 8 00:47:23 2012 using MkDoc