Euphoria
ray.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "base/vec3.h"
4 #include "base/mat4.h"
5 
6 namespace eu
7 {
8  struct UnitRay3f
9  {
12 
13  UnitRay3f(const vec3f& from, const unit3f& dir);
14 
15  [[nodiscard]] static UnitRay3f from_to(const vec3f& from, const vec3f& to);
16  [[nodiscard]] static UnitRay3f from_direction(const unit3f& dir);
17 
18  [[nodiscard]] vec3f get_point(float at) const;
19  [[nodiscard]] UnitRay3f get_transform(const mat4f& m) const;
20  };
21 
22 
23  struct Ray2f
24  {
27 
28  Ray2f(const vec2f& p, const vec2f& d);
29 
30  [[nodiscard]] static Ray2f from_to(const vec2f& from, const vec2f& to);
31  [[nodiscard]] static Ray2f from_direction(const vec2f& direction, const vec2f& pos = zero2f);
32 
33  [[nodiscard]] vec2f get_position(float d) const;
34  };
35 
36  struct Ray3f
37  {
40 
41  Ray3f(const vec3f& from, const vec3f& dir);
42 
43  [[nodiscard]] static Ray3f from_to(const vec3f& from, const vec3f& to);
44  [[nodiscard]] static Ray3f from_direction(const vec3f& dir);
45 
46  [[nodiscard]] vec3f get_point(float at) const;
47  [[nodiscard]] UnitRay3f get_normalized() const;
48  };
49 
50 }
Definition: assert.h:90
constexpr vec2f zero2f
Definition: vec2.h:68
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
Definition: vec3.h:48