1
1
#pragma once
2
2
#define GLM_FORCE_CUDA
3
3
#include < glm/glm.hpp>
4
- // #include <glm/gtx/string_cast.hpp>
5
4
#include " Log.hpp"
6
5
using namespace glm ;
7
6
namespace SLS
@@ -13,36 +12,15 @@ struct Ray
13
12
};
14
13
15
14
/* *
16
- * @brief Get mid point of two rays.
15
+ *! Get mid point of the segment perpendicular to both rays, i.e. intersection point .
17
16
*
18
- * @ param r1 Input of ray 1
19
- * @ param r2 Input of ray 2
20
- * @ param dist distance between two rays
17
+ * / param r1 Input of ray 1
18
+ * / param r2 Input of ray 2
19
+ * / param dist distance between two rays
21
20
*
22
- * @ return Mid point
21
+ * / return Mid point
23
22
*/
24
- inline glm::vec4 midPoint (const Ray &r1, const Ray &r2, float &dist)
25
- {
26
- glm::vec3 a (r1.origin );
27
- glm::vec3 b (r1.dir );
28
- glm::vec3 c (r2.origin );
29
- glm::vec3 d (r2.dir );
30
-
31
-
32
-
33
-
34
- auto s = ( dot (b,d)*( dot (a,d) - dot (b,c)) - dot (a,d)*dot (c,d)) / (dot (b,d)*dot (b,d)-1 .0f );
35
- auto t = ( dot (b,d)*( dot (c,d) - dot (a,d)) - dot (b,c)*dot (a,b)) / (dot (b,d)*dot (b,d)-1 .0f );
36
-
37
-
38
- auto p_1 = a+s*b;
39
- auto q_1 = c+t*d;
40
-
41
- dist = distance (p_1, q_1);
42
- return vec4 ((p_1+q_1)/2 .0f , 1 .0f );
43
-
44
- }
45
- inline glm::vec4 midPointBkp ( const Ray &r1, const Ray &r2, float &dist)
23
+ inline glm::vec4 midPoint ( const Ray &r1, const Ray &r2, float &dist)
46
24
{
47
25
glm::vec3 v1 (r1.dir );
48
26
glm::vec3 v2 (r2.dir );
@@ -69,15 +47,4 @@ inline glm::vec4 midPointBkp( const Ray &r1, const Ray &r2, float &dist)
69
47
return vec4 ((p1+s*v1+p2+t*v2)/2 .0f , 1.0 );
70
48
71
49
}
72
- inline glm::vec4 midPointPaper (const Ray &r1, const Ray &r2, float &dist)
73
- {
74
- glm::vec3 p (r1.origin );
75
- glm::vec3 q (r2.origin );
76
- glm::vec3 u (r1.dir );
77
- glm::vec3 v (r2.dir );
78
- auto w = p-q;
79
- auto s = (dot (w,u)*dot (v,v)-dot (u,v)*dot (w,v))/(dot (v,u)*dot (v,u) - dot (v,v)*dot (u,u));
80
- auto t = (dot (v,u)*dot (w,u)-dot (u,u)*dot (w,v))/(dot (v,u)*dot (v,u)-dot (v,v)*dot (u,u));
81
- return vec4 ( ((p+s*u)+(q+t*v))/2 .0f , 1.0 );
82
- }
83
50
}
0 commit comments