coord trf looks good!
This commit is contained in:
92
swissmx.py
92
swissmx.py
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user