26 #ifndef CORE_GEOMETRY_H 27 #define CORE_GEOMETRY_H 33 #define FLT_EPSILON 1.19209e-07 305 double evaluate(
double x,
double y)
const;
385 void def_affinity(
double u1x,
double u1y,
double u2x,
double u2y,
double u3x,
double u3y,
double t1x,
393 double triangle_area(
double x1,
double y1,
double x2,
double y2,
double x3,
double y3);
457 double point_plane_at_x_y_zero = 0.);
471 #define EULER_CLIPPING(rot,tilt,psi) \ 472 rot = realWRAP(rot, 0, 360); \ 473 tilt = realWRAP(tilt, 0, 360); \ 474 psi = realWRAP(psi, 0, 360); 480 #define EULER_CLIPPING_RAD(rot, tilt, psi) \ 481 rot = realWRAP(rot, 0, 2.0*PI); \ 482 tilt = realWRAP(tilt, 0, 2.0*PI); \ 483 psi = realWRAP(psi, 0, 2.0*PI); 498 bool homogeneous=
false);
506 bool homogeneous=
false);
520 T rot2, T tilt2, T psi2,
529 T rot2, T tilt2, T psi2,
585 double&
gamma,
bool homogeneous=
false);
804 double angCircle,
double angStep, std::vector<double> &outputEulerAngles);
double spherical_distance(const Matrix1D< double > &r1, const Matrix1D< double > &r2)
bool point_inside_polygon(const std::vector< Matrix1D< double > > &polygon, const Matrix1D< double > &point)
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 Euler_angles2matrix(T a, T b, T g, Matrix2D< T > &A, bool homogeneous=false)
void Euler_direction(double alpha, double beta, double gamma, Matrix1D< double > &v)
void Euler_direction2angles(Matrix1D< double > &v, double &alpha, double &beta, double &gamma)
double beta(const double a, const double b)
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 z
z coordinate, assumed to be a function of x and y
void Euler_another_set(double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
#define V3_MINUS_V3(a, b, c)
void Euler_mirrorY(double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
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)
double w
Weight of the point in the Least-Squares problem.
double intersection_unit_cylinder(const Matrix1D< double > &u, const Matrix1D< double > &r)
void Euler_apply_transf(const Matrix2D< double > &L, const Matrix2D< double > &R, double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
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=0.)
double triangle_area(double x1, double y1, double x2, double y2, double x3, double y3)
void computeCircleAroundE(const Matrix2D< double > &E, double angCircle, double angStep, std::vector< double > &outputEulerAngles)
void box_enclosing(const Matrix1D< double > &v0, const Matrix1D< double > &vF, const Matrix2D< double > &V, Matrix1D< double > &corner1, Matrix1D< double > &corner2)
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 rectangle_enclosing(const Matrix1D< double > &v0, const Matrix1D< double > &vF, const Matrix2D< double > &V, Matrix1D< double > &corner1, Matrix1D< double > &corner2)
double point_plane_distance_3D(const Matrix1D< double > &p, const Matrix1D< double > &a, const Matrix1D< double > &v)
double intersection_unit_sphere(const Matrix1D< double > &u, const Matrix1D< double > &r)
void least_squares_line_fit(const std::vector< fit_point2D > &IN_points, double &line_A, double &line_B)
double Euler_distanceBetweenMatrices(const Matrix2D< double > &E1, const Matrix2D< double > &E2)
void Euler_mirrorX(double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
int SplineDegree
Order of the Bspline.
T Euler_distanceBetweenAngleSets(T rot1, T tilt1, T psi1, T rot2, T tilt2, T psi2, bool only_projdir)
void Euler_up_down(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)
double y
y coordinate (assumed to be a function of x)
void direction(const MultidimArray< double > &orMap, MultidimArray< double > &qualityMap, double lambda, int size, MultidimArray< double > &dirMap, int x, int y)
void Euler_rotate(const MultidimArray< double > &V, double rot, double tilt, double psi, MultidimArray< double > &result)
double intersection_unit_cube(const Matrix1D< double > &u, const Matrix1D< double > &r)
double w
Weight of the point in the Least-Squares problem.
TYPE distance(struct Point_T *p, struct Point_T *q)
MultidimArray< double > c_ml
T dotProduct(const Matrix1D< T > &v1, const Matrix1D< T > &v2)
void Euler_anglesZXZ2matrix(double a, double b, double g, Matrix2D< double > &A, bool homogeneous=false)
double psi(const double x)
void Euler_matrix2angles(const Matrix2D< double > &A, double &alpha, double &beta, double &gamma, bool homogeneous=false)
T Euler_distanceBetweenAngleSets_fast(const Matrix2D< T > &E1, T rot2, T tilt2, T psi2, bool only_projdir, Matrix2D< T > &E2)
void Uproject_to_plane(const Matrix1D< double > &point, const Matrix1D< double > &direction, double distance, Matrix1D< double > &result)
void least_squares_plane_fit_All_Points(const MultidimArray< double > &Image, double &plane_A, double &plane_B, double &plane_C)