Commit 48be2d1b by Daniel Toyra

### More surface map stuff

parent 450ce175
 ... ... @@ -46,13 +46,13 @@ def znm2Rc(A,R): minimum curvature. Inputs: A, R A - List of amplitudes for order 2 Zernike polynomials, ordered so that m A - List of amplitudes of order 2 Zernike polynomials, ordered so that m increases with list index. 1 <= len(A) <= 3. [m] R - Radius of the mirror surface in the xy-plane. [m] Returns: Rc Rc - If astigmatic modes are used (len(A) == 2 or 3) a numpy.array of length 2 containing min and max curvatures is returned. If only the 'defocus' 2 containing max and min curvatures is returned. If only the 'defocus' mode is used Rc is a float number. [m] Based on the Simtools function 'FT_Znm_to_Rc.m' by Charlotte Bond. ... ... @@ -79,3 +79,33 @@ def znm2Rc(A,R): Rc = ((2*a20 + s*a22)**2 + R**2)/(2*(2*a20+s*a22)) return Rc def Rc2znm(Rc,R): ''' Converts Radius of curvatue to amplitudes of the second order Zernike polynomials. Iputs: Rc, R Rc - Radius of curvature. Either a number or a numpy.ndarray with minimum and maximum curvature. R - Radius of mirror in xy-plane. Returns: A A - Ampltude(s) of the second order Zernike polynomials needed. Is a number if Rc is a number, and if R is a numpy.ndarray so is A. Based on Simtools function 'FT_Rc_to_Znm.m' by Charlotte Bond. ''' # Amplitude in x and y directions c = ( Rc - np.sign(Rc)*np.sqrt(Rc**2 - R**2) )/2 if isinstance(Rc, np.ndarray): A = np.array([]) # Adding Z(2,0) amplitude A = np.append(A,c.mean()) # Adding Z(2,2) amplitude A = np.append(A,2*(c[0]-A[0])) elif isinstance(Rc, float) or isinstance(Rc, int): A = c return A
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!