Symmetrize volume.
141 if (!helical && !dihedral && !helicalDihedral)
159 applyGeometry(spline, V_aux, V_in, R.transpose(), xmipp_transformation::IS_NOT_INV, wrap, avg, BcoeffsPtr);
162 arrayByArray(V_out, V_aux, V_out,
'+');
164 selfArrayByArrayMask(V_in, V_aux, V_out,
'+', mask);
168 arrayByScalar(V_out, 1.0/(SL.
symsNo() + 1.0f), V_out,
'*');
171 symmetry_Helical(V_out,V_in,zHelical,rotHelical,rotPhaseHelical,
nullptr,
false,heightFraction,Cn);
172 else if (helicalDihedral)
174 symmetry_Helical(V_out,V_in,zHelical,rotHelical,rotPhaseHelical,
nullptr,
true,heightFraction,Cn);
176 rotate(spline,Vrotated,V_out,180.0,
'X',xmipp_transformation::WRAP);
182 auto zmax=(int)(0.1*
ZSIZE(V_in));
void getMatrices(int i, Matrix2D< double > &L, Matrix2D< double > &R, bool homogeneous=true) const
void resizeNoCopy(const MultidimArray< T1 > &v)
void BinaryCircularMask(MultidimArray< int > &mask, double radius, int mode, double x0, double y0, double z0)
void symmetry_Dihedral(MultidimArray< double > &Vout, const MultidimArray< double > &Vin, double rotStep, double zmin, double zmax, double zStep, MultidimArray< int > *mask)
#define rotate(a, i, j, k, l)
void computeStats_within_binary_mask(const MultidimArray< T1 > &mask, const MultidimArray< T > &m, double &min_val, double &max_val, double &avg, double &stddev)
void symmetry_Helical(MultidimArray< double > &Vout, const MultidimArray< double > &Vin, double zHelical, double rotHelical, double rot0, MultidimArray< int > *mask, bool dihedral, double heightFraction, int Cn)
constexpr int OUTSIDE_MASK