coord trf looks good!

This commit is contained in:
2022-09-06 17:35:48 +02:00
parent 8d8ab1a5fd
commit a2dc5c73dc

View File

@@ -453,7 +453,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
#--- beam marker ---
size_eu=cfg.value(AppCfg.GEO_BEAM_SZ)
pos_eu=cfg.value(AppCfg.GEO_BEAM_POS)
pos_eu*=0
self._goBeamMarker=obj=UsrGO.Marker(pos_eu-size_eu/2,size_eu,mode=0)
obj.sigRegionChangeFinished.connect(self.cb_marker_moved)
#bm.setTransform(tr) # assign transform
@@ -825,13 +824,10 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
A=np.asarray(geo._pix2pos.I)
#trf=cfg.value(AppCfg.GEO_CAM_TRF)
tr=self._goImgGrp.transform()
trf=np.array( ((tr.m11(),tr.m21(),tr.m31()),(tr.m12(),tr.m22(),tr.m32()),(tr.m13(),tr.m23(),tr.m33())) )
tr=grp.transform()
p1=np.hstack((opt_ctr, 1)) # position of optical center on image item
p2=np.matmul(trf, p1) # position of optical center on viewbox
p=tr.map(opt_ctr[0],opt_ctr[1])
tr.setMatrix(A[0, 0], A[0, 1], 0,
A[1, 0], A[1, 1], 0,
p2[0], p2[1], 1) # translate dx,dy
p[0], p[1], 1) # translate dx,dy
grp.setTransform(tr)
#bm=self._goBeamMarker
@@ -1289,14 +1285,14 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
app=QApplication.instance()
geo=app._geometry
zoom = app._zoom.get_val()
fast_x=self.tweakers["fast_x"];fast_y=self.tweakers["fast_y"]
twk_fx=self.tweakers["fast_x"];twk_fy=self.tweakers["fast_y"]
# TODO: get_position() is delayed as it is the RBV. do same as for the zoom
# TODO: and return the last set_point
fx=fast_x.get_val()
fy=fast_y.get_val()
fx=twk_fx.get_val()
fy=twk_fy.get_val()
try:
tracked=self._goTracked
zoom_old,fx_old,fy_old=tracked._state
grp=self._goTracked
zoom_old,fx_old,fy_old=grp._state
except AttributeError: # at initialization
self._goTracked=grp=pg.ItemGroup()
grp.setZValue(20) #higher than beam marker and opt ctr that have z=10
@@ -1304,67 +1300,23 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
grp._state=(zoom,fx,fy)
zoom_old=fx_old=fy_old=None
_log.debug(f"zoom:{zoom_old}->{zoom} fx:{fx_old}->{fx} fy:{fy_old}->{fy}")
opt_ctr=geo._opt_ctr
if zoom_old!=zoom:
#geo.interp_zoom(zoom_old)
#pix2pos_old=geo._pix2pos
geo.interp_zoom(zoom)
pix2pos=geo._pix2pos
# pos2pix: np.asarray(geo._pix2pos.I*np.mat(p).T).ravel()
A=np.asarray(pix2pos.I)
grp=self._goTracked
tr=grp.transform()
#UsrGO.obj_info(tr)
bm=self._goBeamMarker
bm_pos=bm.pos()
bm_sz=bm.size()
pos=(-fx,-fy)-bm_pos
#fx_px,fy_px=geo.pos2pix((fx,fy)-bm_pos)-opt_ctr
fx_px,fy_px=geo.pos2pix(pos)-opt_ctr
tr.setMatrix(A[0,0], A[0,1], 0, #. . 100
A[1,0], A[1,1], 0,
fx_px, fy_px, 1) #100 . . pixel right
grp=self._goTracked
opt_ctr=geo._opt_ctr
A=np.asarray(geo._pix2pos.I)
# trf=cfg.value(AppCfg.GEO_CAM_TRF)
tr=self._goFixGrp.transform()
p1=bm.pos()+bm.size()/2+(-fx,-fy)
#p=tr.map(opt_ctr[0], opt_ctr[1])
p=tr.map(p1[0], p1[1])
tr.setMatrix(A[0, 0], A[0, 1], 0,
A[1, 0], A[1, 1], 0,
p[0], p[1], 1) # translate dx,dy
grp.setTransform(tr)
#for o in tracked['objLst']:
# # names consists of abrevations
# # part 0: po=position sz=size dt=delta
# # part 1: px=pixel eu=engineering units (e.g. mm)
# po_px=o.pos()
# sz_px=o.size()
# tr=o.transform()
# geo._pix2pos=pix2pos_old
# dt_px=-opt_ctr-po_px
# dt_eu=geo.pix2pos(dt_px)
# sz_eu=geo.pix2pos(sz_px)
# geo._pix2pos=pix2pos_new
# dt_px2=geo.pos2pix(dt_eu)
# sz_px2=geo.pos2pix(sz_eu)
# po_px2=-opt_ctr-dt_px2
# o.setPos(po_px2)
# o.setSize(sz_px2)
#np.asarray(self._pix2pos*np.mat(p).T).ravel()
#geo.interp_zoom(zoom)
#if fx_old!=fx or fy_old!=fy:
# p1=geo.pos2pix((fx_old,fy_old))
# p2=geo.pos2pix((fx,fy))
# d=p1-p2
# for o in tracked['objLst']:
# pos=o.pos()
# sz=o.size()
# tr=o.transform()
# o.setPos(pos+d)
#tracked._state=(zoom, fx, fy)
#imgPos=self._goImg.mapFromScene(event.scenePos())
#x=imgPos.x();y=imgPos.y()
def cb_modify_app_param(self):
wnd=WndParameter(self)
wnd.show()
@@ -2020,7 +1972,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
sp.setup_sync(verbose=verbose&32, timeOfs=0.05)
try:
p=geo._fitPlane
sp.setup_coord_trf(cz=f'{p[0]}X+{p[1]}Y+{p[2]}') # reset to shape path system
sp.setup_coord_trf(cz=f'{p[0]:+.18g}X{p[1]:+.18g}Y{p[2]:+.18g}') # reset to shape path system
except AttributeError:
_log.warning('no plane fitting done. z does not move')
sp.setup_coord_trf() # reset to shape path system
@@ -2037,9 +1989,9 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
_log.info(f'progress {p}/{sp.points.shape[0]}')
time.sleep(.1)
sp.gather_upload(fnRec=fn+'.npz')
#dp=deltatau.shapepath.DebugPlot(sp)
#dp.plot_gather(mode=11)
#plt.show(block=False)
dp=deltatau.shapepath.DebugPlot(sp)
dp.plot_gather(mode=11)
plt.show(block=False)
#plt.show(block=True)
return