ImageD  v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
d_geo_line_2d.h
Go to the documentation of this file.
1 /************************************
2  * added: 29.03.2021 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_GEO_LINE_2D_H
10 #define D_GEO_LINE_2D_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_geo_point_2d.h>
15 
16 //general
17 #include <iostream>
18 #include <vector>
19 #include <fstream>
20 #include <math.h>
21 
22 //Qt
23 #include <QDebug>
24 
25 //openCV
26 #include <opencv2/core/core.hpp>
27 #include <opencv2/highgui/highgui.hpp>
28 #include <opencv2/imgproc/imgproc.hpp>
29 
30 //namespaces
31 using namespace std;
32 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
33 #include <d_opencv_typedefs.h>
34 
35 //predeclaration, because points are needed for lines and vice versa
36 class D_Geo_Point_2D;
37 
43 {
44 public:
45  //constructors
46  D_Geo_Line_2D();
47  D_Geo_Line_2D(double u, double v, double w);
48  D_Geo_Line_2D(D_Geo_Point_2D P); //Dualism with points
50 
51  //pseudo constructors
52  void set_line (D_Geo_Line_2D L);
53  bool set_point_point (D_Geo_Point_2D P1, D_Geo_Point_2D P2);
54  bool set_point_direction(D_Geo_Point_2D P_support, D_Geo_Point_2D direction);
55  bool set_point_angle (D_Geo_Point_2D P_support, double angle_rad);
56 
57  //getter
58  double u() {return m_u;}
59  double v() {return m_v;}
60  double w() {return m_w;}
61  Mat Mat_homogenius();
62  D_Geo_Point_2D direction();
63  D_Geo_Point_2D support();
64  D_Geo_Point_2D normal();
65 
66  //basic operations
67  double mult_scalar_homo(D_Geo_Line_2D L);
68  D_Geo_Point_2D mult_cross_homo(D_Geo_Line_2D L);
69 
70  //other operations
71  D_Geo_Point_2D intersection(D_Geo_Line_2D L);
72  bool parallel(D_Geo_Line_2D L, double delta = 0);
73  double angle();
74  double angle(D_Geo_Line_2D L);
75  double dist(D_Geo_Point_2D P);
76  bool point_on_line(D_Geo_Point_2D P, double dist_max = 0);
77 
78  bool intersection_rect(D_Geo_Point_2D *P1, D_Geo_Point_2D *P2, double t, double b, double l, double r);
79  bool intersection_rect(D_Geo_Point_2D *P1, D_Geo_Point_2D *P2, Rect R);
80  bool intersection_rect(D_Geo_Point_2D *P1, D_Geo_Point_2D *P2, Mat *M);
81 
82 private:
83  //member
84  double m_u;
85  double m_v;
86  double m_w;
87 };
88 
89 #endif // D_GEO_LINE_2D_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
D_Geo_Line_2D::u
double u()
Definition: d_geo_line_2d.h:58
D_Geo_Line_2D::set_line
void set_line(D_Geo_Line_2D L)
Definition: d_geo_line_2d.cpp:37
D_Geo_Line_2D::mult_cross_homo
D_Geo_Point_2D mult_cross_homo(D_Geo_Line_2D L)
Definition: d_geo_line_2d.cpp:118
D_Geo_Point_2D::w
double w()
Definition: d_geo_point_2d.h:61
D_Geo_Line_2D::mult_scalar_homo
double mult_scalar_homo(D_Geo_Line_2D L)
Definition: d_geo_line_2d.cpp:113
D_Geo_Line_2D::parallel
bool parallel(D_Geo_Line_2D L, double delta=0)
Definition: d_geo_line_2d.cpp:131
D_Geo_Line_2D::direction
D_Geo_Point_2D direction()
Definition: d_geo_line_2d.cpp:70
D_Geo_Line_2D::v
double v()
Definition: d_geo_line_2d.h:59
D_Geo_Point_2D::unifrom
D_Geo_Point_2D unifrom()
Definition: d_geo_point_2d.cpp:102
Rect
cv::Rect Rect
Definition: d_opencv_typedefs.h:65
D_Geo_Line_2D::normal
D_Geo_Point_2D normal()
Definition: d_geo_line_2d.cpp:107
D_Geo_Point_2D::distance
double distance(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:160
D_Geo_Line_2D::intersection_rect
bool intersection_rect(D_Geo_Point_2D *P1, D_Geo_Point_2D *P2, double t, double b, double l, double r)
Definition: d_geo_line_2d.cpp:156
D_Geo_Line_2D::D_Geo_Line_2D
D_Geo_Line_2D()
Definition: d_geo_line_2d.cpp:11
D_Geo_Point_2D::equal
bool equal(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:85
D_Geo_Line_2D::point_on_line
bool point_on_line(D_Geo_Point_2D P, double dist_max=0)
Definition: d_geo_line_2d.cpp:151
D_Geo_Line_2D::angle
double angle()
Definition: d_geo_line_2d.cpp:136
D_Geo_Point_2D::v
double v()
Definition: d_geo_point_2d.h:60
D_Geo_Point_2D::vanishing
bool vanishing(double delta=0)
Definition: d_geo_point_2d.cpp:135
D_Geo_Line_2D::dist
double dist(D_Geo_Point_2D P)
Definition: d_geo_line_2d.cpp:146
D_Geo_Point_2D::u
double u()
Definition: d_geo_point_2d.h:59
D_Geo_Line_2D
The D_Geo_Line_2D class represents a 2D line and offers usefulls methods for standard tasks for 2D po...
Definition: d_geo_line_2d.h:43
D_Geo_Point_2D::angle
double angle()
Definition: d_geo_point_2d.cpp:145
D_Geo_Point_2D::y
double y()
Definition: d_geo_point_2d.h:63
d_geo_line_2d.h
D_Geo_Line_2D::support
D_Geo_Point_2D support()
Definition: d_geo_line_2d.cpp:76
d_geo_point_2d.h
D_Geo_Point_2D::x
double x()
Definition: d_geo_point_2d.h:62
D_Geo_Line_2D::w
double w()
Definition: d_geo_line_2d.h:60
D_Geo_Point_2D::add_inhomo
D_Geo_Point_2D add_inhomo(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:107
D_Geo_Point_2D::connection
D_Geo_Line_2D connection(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:155
d_opencv_typedefs.h
D_Geo_Line_2D::intersection
D_Geo_Point_2D intersection(D_Geo_Line_2D L)
Definition: d_geo_line_2d.cpp:126
D_Geo_Line_2D::set_point_direction
bool set_point_direction(D_Geo_Point_2D P_support, D_Geo_Point_2D direction)
Definition: d_geo_line_2d.cpp:50
D_Geo_Line_2D::Mat_homogenius
Mat Mat_homogenius()
Definition: d_geo_line_2d.cpp:61
d_enum.h
D_Geo_Point_2D
The D_Geo_Point_2D class represents a 2D point and offers usefulls methods for standard tasks for 2D ...
Definition: d_geo_point_2d.h:43
D_Geo_Line_2D::set_point_point
bool set_point_point(D_Geo_Point_2D P1, D_Geo_Point_2D P2)
Definition: d_geo_line_2d.cpp:44
D_Geo_Line_2D::set_point_angle
bool set_point_angle(D_Geo_Point_2D P_support, double angle_rad)
Definition: d_geo_line_2d.cpp:55