Xmipp  v3.23.11-Nereus
Functions
angular_sph_alignment.cpp File Reference
#include "angular_sph_alignment.h"
#include "core/transformations.h"
#include "core/xmipp_image_extension.h"
#include "core/xmipp_image_generic.h"
#include "data/projection.h"
#include "data/mask.h"
Include dependency graph for angular_sph_alignment.cpp:

Go to the source code of this file.

Functions

double continuousSphCost (double *x, void *_prm)
 

Function Documentation

◆ continuousSphCost()

double continuousSphCost ( double *  x,
void *  _prm 
)

Definition at line 263 of file angular_sph_alignment.cpp.

264 {
265  auto *prm=(ProgAngularSphAlignment *)_prm;
266  int idx = 3*(prm->vecSize);
267  double deltax=x[idx+1];
268  double deltay=x[idx+2];
269  double deltaRot=x[idx+3];
270  double deltaTilt=x[idx+4];
271  double deltaPsi=x[idx+5];
272  double deltaDefocusU=x[idx+6];
273  double deltaDefocusV=x[idx+7];
274  double deltaDefocusAngle=x[idx+8];
275  if (prm->maxShift>0 && deltax*deltax+deltay*deltay>prm->maxShift*prm->maxShift)
276  return 1e38;
277  if (prm->maxAngularChange>0 && (fabs(deltaRot)>prm->maxAngularChange || fabs(deltaTilt)>prm->maxAngularChange || fabs(deltaPsi)>prm->maxAngularChange))
278  return 1e38;
279 
280  MAT_ELEM(prm->A,0,2)=prm->old_shiftX+deltax;
281  MAT_ELEM(prm->A,1,2)=prm->old_shiftY+deltay;
282  MAT_ELEM(prm->A,0,0)=1;
283  MAT_ELEM(prm->A,0,1)=0;
284  MAT_ELEM(prm->A,1,0)=0;
285  MAT_ELEM(prm->A,1,1)=1;
286 
287  return prm->tranformImageSph(x,prm->old_rot+deltaRot, prm->old_tilt+deltaTilt, prm->old_psi+deltaPsi,
288  deltaDefocusU, deltaDefocusV, deltaDefocusAngle);
289 }
doublereal * x
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
double maxShift
Maximum shift.
ProgClassifyCL2D * prm