Euphoria
ray.cc
Go to the documentation of this file.
1 #include "base/ray.h"
2 
3 
4 
5 namespace eu
6 {
7 
8 
9  UnitRay3f::UnitRay3f(const vec3f& f, const unit3f& d)
10  : from(f)
11  , dir(d)
12  {
13  }
14 
15 
16  [[nodiscard]] UnitRay3f
17  UnitRay3f::from_to(const vec3f& afrom, const vec3f& ato)
18  {
19  return {afrom, vec3f::from_to(afrom, ato).get_normalized()};
20  }
21 
22 
23  [[nodiscard]] UnitRay3f
25  {
26  return {zero3f, adir};
27  }
28 
29 
30  vec3f
31  UnitRay3f::get_point(float at) const
32  {
33  return from + dir * at;
34  }
35 
36 
37  [[nodiscard]] UnitRay3f
39  {
40  return
41  {
42  m.get_transform_point(from),
43  m.get_transform_vec(dir)
44  };
45  }
46 
47 
48  [[nodiscard]] Ray2f
49  Ray2f::from_direction(const vec2f& direction, const vec2f& pos)
50  {
51  return {pos, direction};
52  }
53 
54 
55  [[nodiscard]] Ray2f
56  Ray2f::from_to(const vec2f& from, const vec2f& to)
57  {
58  return {from, vec2f::from_to(from, to)};
59  }
60 
61 
62  vec2f
63  Ray2f::get_position(float d) const
64  {
65  return position + d * direction;
66  }
67 
68 
69  Ray2f::Ray2f(const vec2f& p, const vec2f& d)
70  : position(p)
71  , direction(d)
72  {
73  }
74 
75 
76  Ray3f::Ray3f(const vec3f& f, const vec3f& d)
77  : from(f)
78  , dir(d)
79  {
80  }
81 
82 
83  [[nodiscard]] Ray3f
84  Ray3f::from_to(const vec3f& from, const vec3f& to)
85  {
86  return Ray3f{from, vec3f::from_to(from, to)};
87  }
88 
89 
90  [[nodiscard]] Ray3f
92  {
93  return Ray3f{zero3f, dir};
94  }
95 
96 
97  vec3f
98  Ray3f::get_point(float at) const
99  {
100  return from + dir * at;
101  }
102 
103  UnitRay3f
105  {
106  return {from, dir.get_normalized()};
107  }
108 
109 
110 }
111 
Definition: assert.h:90
constexpr vec3f zero3f
Definition: vec3.h:95
Definition: ray.h:24
vec2f get_position(float d) const
Definition: ray.cc:63
static Ray2f from_direction(const vec2f &direction, const vec2f &pos=zero2f)
Definition: ray.cc:49
vec2f position
Definition: ray.h:25
Ray2f(const vec2f &p, const vec2f &d)
Definition: ray.cc:69
vec2f direction
Definition: ray.h:26
static Ray2f from_to(const vec2f &from, const vec2f &to)
Definition: ray.cc:56
Definition: ray.h:37
vec3f dir
Definition: ray.h:39
static Ray3f from_to(const vec3f &from, const vec3f &to)
Definition: ray.cc:84
static Ray3f from_direction(const vec3f &dir)
Definition: ray.cc:91
vec3f get_point(float at) const
Definition: ray.cc:98
Ray3f(const vec3f &from, const vec3f &dir)
Definition: ray.cc:76
vec3f from
Definition: ray.h:38
UnitRay3f get_normalized() const
Definition: ray.cc:104
UnitRay3f(const vec3f &from, const unit3f &dir)
Definition: ray.cc:9
unit3f dir
Definition: ray.h:11
UnitRay3f get_transform(const mat4f &m) const
Definition: ray.cc:38
vec3f get_point(float at) const
Definition: ray.cc:31
static UnitRay3f from_to(const vec3f &from, const vec3f &to)
Definition: ray.cc:17
static UnitRay3f from_direction(const unit3f &dir)
Definition: ray.cc:24
vec3f from
Definition: ray.h:10
Definition: mat4.h:14
Definition: vec2.h:33
static vec2f from_to(const vec2f &from, const vec2f &to)
Definition: vec2.cc:83
Definition: vec3.h:48
unit3f get_normalized() const
Definition: vec3.cc:174
static vec3f from_to(const vec3f &from, const vec3f &to)
Definition: vec3.cc:127