Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 7 Current »

This is a flow chart for dsimulator.

Some notes about it.

  • The input/output in light blue is in the sky plane. The input/output in green is the mask plane.

  • Iraf procedures are in CAPITAL letters.

  • The only use of actual distorsions is in LEN_SLITS. This procedure, which is triggered if ADJ_SLIT = YES, only affects the slit edges.

# Open X-Projection mapping
        fdx = open (XPROJ_MAP, READ_ONLY, TEXT_FILE)
        call gs_ingest (fdx, asfx, asfy)

      ......
# We will need to recalculate something ...

                xlow = X2(sdat,ndx1) + SLIT_GAP(indat)
                xupp = X1(sdat,ndx2) - SLIT_GAP(indat)
                xcen = 0.5 * (xlow + xupp)

                yas = Y2(sdat,ndx1)
                dxlow = gseval (asfx, xcen, yas)
                yas = Y1(sdat,ndx2)
                dxupp = gseval (asfx, xcen, yas)
                dxavg = 0.5 * (dxupp + dxlow)
                dxlow = dxlow - dxavg
                dxupp = dxupp - dxavg
call eprintf ("%6.3f %6.3f\n")
call pargr (dxlow)
call pargr (dxupp)

                if (pc1 == CODE_AS) {
                        del1 = 0.
                        del2 = X1(sdat,ndx2) - xlow - (dxupp - dxlow)
                } else if (pc2 == CODE_AS) {
                        del1 =  xupp - X2(sdat,ndx1) + (dxlow - dxupp)
                        del2 = 0.
                } else {
                        del1 = xcen - 0.5*SLIT_GAP(indat) - X2(sdat,ndx1) + dxlow
                        del2 = X1(sdat,ndx2) - (xcen + 0.5*SLIT_GAP(indat)) - dxupp
                }



                X2(sdat,ndx1) = X2(sdat,ndx1) + del1
                if (del1 != 0. && RELPA(sdat,ndx1) != INDEF) {
                        tana = tan (RELPA(sdat,ndx1))
                        Y2(sdat,ndx1) = Y2(sdat,ndx1) + del1 * FLIP * tana
                }

                X1(sdat,ndx2) = X1(sdat,ndx2) - del2
                if (del2 != 0. && RELPA(sdat,ndx2) != INDEF) {
                        tana = tan (RELPA(sdat,ndx2))
                        Y1(sdat,ndx2) = Y1(sdat,ndx2) - del2 * FLIP * tana
                }
  • The other distorsion (based on an optical model of Keck) is done at GNOM_TO_DPROJ procedure.

#
# GNOM_TO_DPROJ: adjust gnomonic coords to curved surface, take projection
# onto plane, and apply distortion correction, resulting in distortion-
# adjusted projected coords ready for a vertical projection to slitmask.
# Double inputs, outputs;  outputs may be the same arguments as inputs.
#
#####
## NB: We assume Sutin's ray trace is already producing radii to curved surface.
####

procedure gnom_to_dproj (xg, yg, xd, yd)

double  xg, yg                  # x,y gnomonic projection
double  xd, yd                  # returned x,y projected on plane (distorted)

double  rho                     # radius of input angle (approx from h)
double  cosa, sina              # cos, sin of azimuth in image plane

begin
        rho= sqrt (xg * xg + yg * yg)
        cosa = yg / rho
        sina = xg / rho

# Apply map gnomonic projection --> real telescope
        rho = rho * (1. + DIST_C0 + DIST_C2 * rho * rho)
        xd = rho * sina
        yd = rho * cosa
end

In this procedure, DIST_C0 = 0.0e-4 and DIST_C2 = -1.111311e-8

  • No labels