Xmipp  v3.23.11-Nereus
Macros | Functions
geometry.cpp File Reference
#include <iostream>
#include <math.h>
#include "geometry.h"
#include "xmipp_funcs.h"
#include "transformations.h"
#include "bilib/kernel.h"
Include dependency graph for geometry.cpp:

Go to the source code of this file.

Macros

#define DEFORM_AND_CHOOSE_CORNERS2D
 
#define DEFORM_AND_CHOOSE_CORNERS3D
 
#define CHECK
 
#define APPLYGEO(type)   applyGeometry(1, result, *((MultidimArray<type> *)V.im), R, xmipp_transformation::IS_NOT_INV, xmipp_transformation::DONT_WRAP);
 
#define ASSIGN_IF_GOOD_ONE
 

Functions

void Uproject_to_plane (const Matrix1D< double > &point, const Matrix1D< double > &direction, double distance, Matrix1D< double > &result)
 
void Uproject_to_plane (const Matrix1D< double > &r, double rot, double tilt, double psi, Matrix1D< double > &result)
 
void Uproject_to_plane (const Matrix1D< double > &r, const Matrix2D< double > &euler, Matrix1D< double > &result)
 
double spherical_distance (const Matrix1D< double > &r1, const Matrix1D< double > &r2)
 
double point_line_distance_3D (const Matrix1D< double > &p, const Matrix1D< double > &a, const Matrix1D< double > &v)
 
void least_squares_plane_fit (FitPoint *IN_points, int Npoints, double &plane_a, double &plane_b, double &plane_c)
 
void least_squares_plane_fit_All_Points (const MultidimArray< double > &Image, double &plane_a, double &plane_b, double &plane_c)
 
void least_squares_line_fit (const std::vector< fit_point2D > &IN_points, double &line_a, double &line_b)
 
void Bspline_model_fitting (const std::vector< FitPoint > &IN_points, int SplineDegree, int l0, int lF, int m0, int mF, double h_x, double h_y, double x0, double y0, Bspline_model &result)
 
void rectangle_enclosing (const Matrix1D< double > &v0, const Matrix1D< double > &vF, const Matrix2D< double > &V, Matrix1D< double > &corner1, Matrix1D< double > &corner2)
 
void box_enclosing (const Matrix1D< double > &v0, const Matrix1D< double > &vF, const Matrix2D< double > &V, Matrix1D< double > &corner1, Matrix1D< double > &corner2)
 
bool point_inside_polygon (const std::vector< Matrix1D< double > > &polygon, const Matrix1D< double > &point)
 
void def_affinity (double u1x, double u1y, double u2x, double u2y, double u3x, double u3y, double t1x, double t1y, double t2x, double t2y, double t3x, double t3y, Matrix2D< double > &A, Matrix1D< double > &T, Matrix2D< double > &invW)
 
double triangle_area (double x1, double y1, double x2, double y2, double x3, double y3)
 
int line_plane_intersection (const Matrix1D< double > normal_plane, const Matrix1D< double > vector_line, Matrix1D< double > &intersection_point, const Matrix1D< double > point_line, double point_plane_at_x_y_zero)
 
template<typename T >
void Euler_angles2matrix (T alpha, T beta, T gamma, Matrix2D< T > &A, bool homogeneous)
 
void Euler_anglesZXZ2matrix (double a, double b, double g, Matrix2D< double > &A, bool homogeneous)
 
double Euler_distanceBetweenMatrices (const Matrix2D< double > &E1, const Matrix2D< double > &E2)
 
template<typename T >
Euler_distanceBetweenAngleSets (T rot1, T tilt1, T psi1, T rot2, T tilt2, T psi2, bool only_projdir)
 
template<typename T >
Euler_distanceBetweenAngleSets_fast (const Matrix2D< T > &E1, T rot2, T tilt2, T psi2, bool only_projdir, Matrix2D< T > &E2)
 
void Euler_direction (double alpha, double beta, double gamma, Matrix1D< double > &v)
 
void Euler_direction2angles (Matrix1D< double > &v0, double &alpha, double &beta, double &gamma)
 
void Euler_matrix2angles (const Matrix2D< double > &A, double &alpha, double &beta, double &gamma, bool homogeneous)
 
void Euler_Angles_after_compresion (const double rot, double tilt, double psi, double &new_rot, double &new_tilt, double &new_psi, Matrix2D< double > &D)
 
void Euler_up_down (double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_another_set (double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_mirrorY (double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_mirrorX (double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_mirrorXY (double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_apply_transf (const Matrix2D< double > &L, const Matrix2D< double > &R, double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
 
void Euler_rotate (const MultidimArray< double > &V, double rot, double tilt, double psi, MultidimArray< double > &result)
 
void Euler_rotate (const MultidimArrayGeneric &V, double rot, double tilt, double psi, MultidimArray< double > &result)
 
void computeCircleAroundE (const Matrix2D< double > &E, double angCircle, double angStep, std::vector< double > &outputEulerAngles)
 
double intersection_unit_sphere (const Matrix1D< double > &u, const Matrix1D< double > &r)
 
double intersection_unit_cylinder (const Matrix1D< double > &u, const Matrix1D< double > &r)
 
double intersection_unit_cube (const Matrix1D< double > &u, const Matrix1D< double > &r)
 
template void Euler_angles2matrix< double > (double, double, double, Matrix2D< double > &, bool)
 
template void Euler_angles2matrix< float > (float, float, float, Matrix2D< float > &, bool)
 
template float Euler_distanceBetweenAngleSets< float > (float rot1, float tilt1, float psi1, float rot2, float tilt2, float psi2, bool only_projdir)
 
template double Euler_distanceBetweenAngleSets< double > (double rot1, double tilt1, double psi1, double rot2, double tilt2, double psi2, bool only_projdir)
 
template double Euler_distanceBetweenAngleSets_fast< double > (const Matrix2D< double > &E1, double rot2, double tilt2, double psi2, bool only_projdir, Matrix2D< double > &E2)
 

Macro Definition Documentation

◆ APPLYGEO

#define APPLYGEO (   type)    applyGeometry(1, result, *((MultidimArray<type> *)V.im), R, xmipp_transformation::IS_NOT_INV, xmipp_transformation::DONT_WRAP);

◆ ASSIGN_IF_GOOD_ONE

#define ASSIGN_IF_GOOD_ONE
Value:
if (fabs(XX(r)+t*XX(u))-XMIPP_EQUAL_ACCURACY<=0.5 && \
fabs(YY(r)+t*YY(u))-XMIPP_EQUAL_ACCURACY<=0.5 && \
fabs(ZZ(r)+t*ZZ(u))-XMIPP_EQUAL_ACCURACY<=0.5) {\
if (found_t==0) {found_t++; t1=t;} \
else if (found_t==1) {found_t++; t2=t;} \
}
#define XX(v)
Definition: matrix1d.h:85
#define XMIPP_EQUAL_ACCURACY
Definition: xmipp_macros.h:119
#define YY(v)
Definition: matrix1d.h:93
doublereal * u
#define ZZ(v)
Definition: matrix1d.h:101

◆ CHECK

#define CHECK

Definition at line 837 of file geometry.cpp.

◆ DEFORM_AND_CHOOSE_CORNERS2D

#define DEFORM_AND_CHOOSE_CORNERS2D
Value:
M2x2_BY_V2x1(v,V,v); \
XX(corner1)=XMIPP_MIN(XX(corner1),XX(v)); \
XX(corner2)=XMIPP_MAX(XX(corner2),XX(v)); \
YY(corner1)=XMIPP_MIN(YY(corner1),YY(v)); \
YY(corner2)=XMIPP_MAX(YY(corner2),YY(v));
#define XMIPP_MAX(x, y)
Definition: xmipp_macros.h:193
#define XX(v)
Definition: matrix1d.h:85
#define M2x2_BY_V2x1(a, M, b)
Definition: matrix2d.h:225
#define XMIPP_MIN(x, y)
Definition: xmipp_macros.h:181
#define YY(v)
Definition: matrix1d.h:93

◆ DEFORM_AND_CHOOSE_CORNERS3D

#define DEFORM_AND_CHOOSE_CORNERS3D
Value:
M3x3_BY_V3x1(v,V,v); \
XX(corner1)=XMIPP_MIN(XX(corner1),XX(v)); \
XX(corner2)=XMIPP_MAX(XX(corner2),XX(v)); \
YY(corner1)=XMIPP_MIN(YY(corner1),YY(v)); \
YY(corner2)=XMIPP_MAX(YY(corner2),YY(v)); \
ZZ(corner1)=XMIPP_MIN(ZZ(corner1),ZZ(v)); \
ZZ(corner2)=XMIPP_MAX(ZZ(corner2),ZZ(v));
#define XMIPP_MAX(x, y)
Definition: xmipp_macros.h:193
#define XX(v)
Definition: matrix1d.h:85
#define XMIPP_MIN(x, y)
Definition: xmipp_macros.h:181
#define M3x3_BY_V3x1(a, M, b)
Definition: matrix2d.h:170
#define YY(v)
Definition: matrix1d.h:93
#define ZZ(v)
Definition: matrix1d.h:101

Function Documentation

◆ Euler_angles2matrix< double >()

template void Euler_angles2matrix< double > ( double  ,
double  ,
double  ,
Matrix2D< double > &  ,
bool   
)

◆ Euler_angles2matrix< float >()

template void Euler_angles2matrix< float > ( float  ,
float  ,
float  ,
Matrix2D< float > &  ,
bool   
)

◆ Euler_distanceBetweenAngleSets< double >()

template double Euler_distanceBetweenAngleSets< double > ( double  rot1,
double  tilt1,
double  psi1,
double  rot2,
double  tilt2,
double  psi2,
bool  only_projdir 
)

◆ Euler_distanceBetweenAngleSets< float >()

template float Euler_distanceBetweenAngleSets< float > ( float  rot1,
float  tilt1,
float  psi1,
float  rot2,
float  tilt2,
float  psi2,
bool  only_projdir 
)

◆ Euler_distanceBetweenAngleSets_fast< double >()

template double Euler_distanceBetweenAngleSets_fast< double > ( const Matrix2D< double > &  E1,
double  rot2,
double  tilt2,
double  psi2,
bool  only_projdir,
Matrix2D< double > &  E2 
)