def tan2fp(self, xtan, ytan, adc1, adc2): """ Converts tangent plane coordinates xtan,ytan -> focal plane xfp,yfp """ scale,rotation,offset_x,offset_y,zbcoeffs = self.interpolate_coeffs(adc1,adc2) mean_adc_rad = (adc1+adc2)/2. *np.pi/180. ca = np.cos(mean_adc_rad) sa = np.sin(mean_adc_rad) rxtan, rytan = _reduce_xytan(xtan,ytan) # rotate then derotate to account # for average ADC angle # this leave 20 microns residuals, I don't understand why ... rrxtan = ca*rxtan + sa*rytan rrytan = -sa*rxtan + ca*rytan rrxfp, rryfp = transform(rrxtan, rrytan, scale, rotation, offset_x, offset_y, self.zbpolids, zbcoeffs) rxfp = ca*rrxfp - sa*rryfp ryfp = sa*rrxfp + ca*rryfp xfp, yfp = _expand_xyfp(rxfp, ryfp) return xfp, yfp
def fvc2fp(self, xpix, ypix, xerr=None, yerr=None): """ Converts fiber view camera pixel x,y -> focal plane x,y """ rx, ry = _reduce_xyfvc(xpix, ypix) rxfp, ryfp = transform(rx, ry, self.scale, self.rotation, self.offset_x, self.offset_y, self.zbpolids, self.zbcoeffs) xfp, yfp = _expand_xyfp(rxfp, ryfp) return xfp, yfp