gKit2 light
Loading...
Searching...
No Matches
BBox Struct Reference

boite englobante. More...

Public Member Functions

 BBox (const Point &p)
 BBox (const BBox &box)
BBoxinsert (const Point &p)
BBoxinsert (const BBox &box)
float centroid (const int axis) const
BBoxHit intersect (const RayHit &ray) const
BBoxHit intersect (const RayHit &ray, const Vector &invd) const
 BBox (const Point &p)
 BBox (const BBox &box)
 BBox (const BBox &a, const BBox &b)
BBoxinsert (const Point &p)
BBoxinsert (const BBox &box)
float centroid (const int axis) const
Point centroid () const
BBoxHit intersect (const Ray &ray, const Vector &invd, const float htmax) const
 BBox (const Point &p)
 BBox (const BBox &box)
 BBox (const BBox &a, const BBox &b)
BBoxinsert (const Point &p)
BBoxinsert (const BBox &box)
float centroid (const int axis) const
Point centroid () const
BBoxHit intersect (const Ray &ray, const Vector &invd, const float htmax) const
 BBox (const Point &p)
 BBox (const BBox &box)
 BBox (const BBox &a, const BBox &b)
BBoxinsert (const Point &p)
BBoxinsert (const BBox &box)
float centroid (const int axis) const
Point centroid () const
BBoxHit intersect (const Ray &ray, const Vector &invd, const float htmax) const
 BBox (const Point &p)
 BBox (const BBox &box)
BBoxinsert (const Point &p)
BBoxinsert (const BBox &box)
float centroid (const int axis) const
bool intersect (const RayHit &ray) const
bool intersect (const RayHit &ray, const Vector &invd) const

Public Attributes

Point pmin
Point pmax

Detailed Description

boite englobante.

Definition at line 46 of file tuto_bvh.cpp.

Constructor & Destructor Documentation

◆ BBox() [1/18]

BBox::BBox ( )
inline

Definition at line 50 of file tuto_bvh.cpp.

50: pmin(), pmax() {}

◆ BBox() [2/18]

BBox::BBox ( const Point & p)
inline

Definition at line 52 of file tuto_bvh.cpp.

52: pmin(p), pmax(p) {}

◆ BBox() [3/18]

BBox::BBox ( const BBox & box)
inline

Definition at line 53 of file tuto_bvh.cpp.

53: pmin(box.pmin), pmax(box.pmax) {}

◆ BBox() [4/18]

BBox::BBox ( )
inline

Definition at line 63 of file tuto_bvh2.cpp.

63: pmin(), pmax() {}

◆ BBox() [5/18]

BBox::BBox ( const Point & p)
inline

Definition at line 65 of file tuto_bvh2.cpp.

65: pmin(p), pmax(p) {}

◆ BBox() [6/18]

BBox::BBox ( const BBox & box)
inline

Definition at line 66 of file tuto_bvh2.cpp.

66: pmin(box.pmin), pmax(box.pmax) {}

◆ BBox() [7/18]

BBox::BBox ( const BBox & a,
const BBox & b )
inline

Definition at line 67 of file tuto_bvh2.cpp.

67: pmin(min(a.pmin, b.pmin)), pmax(max(a.pmax, b.pmax)) {}
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point { max(a.x, b.x), max(a.y, b.y), max(a....
Definition vec.cpp:35
Point min(const Point &a, const Point &b)
renvoie la plus petite composante de chaque point { min(a.x, b.x), min(a.y, b.y), min(a....
Definition vec.cpp:30

◆ BBox() [8/18]

BBox::BBox ( )
inline

Definition at line 68 of file tuto_bvh2_gltf.cpp.

68: pmin(), pmax() {}

◆ BBox() [9/18]

BBox::BBox ( const Point & p)
inline

Definition at line 70 of file tuto_bvh2_gltf.cpp.

70: pmin(p), pmax(p) {}

◆ BBox() [10/18]

BBox::BBox ( const BBox & box)
inline

Definition at line 71 of file tuto_bvh2_gltf.cpp.

71: pmin(box.pmin), pmax(box.pmax) {}

◆ BBox() [11/18]

BBox::BBox ( const BBox & a,
const BBox & b )
inline

Definition at line 72 of file tuto_bvh2_gltf.cpp.

72: pmin(min(a.pmin, b.pmin)), pmax(max(a.pmax, b.pmax)) {}

◆ BBox() [12/18]

BBox::BBox ( )
inline

Definition at line 68 of file tuto_bvh2_gltf_brdf.cpp.

68: pmin(), pmax() {}

◆ BBox() [13/18]

BBox::BBox ( const Point & p)
inline

Definition at line 70 of file tuto_bvh2_gltf_brdf.cpp.

70: pmin(p), pmax(p) {}

◆ BBox() [14/18]

BBox::BBox ( const BBox & box)
inline

Definition at line 71 of file tuto_bvh2_gltf_brdf.cpp.

71: pmin(box.pmin), pmax(box.pmax) {}

◆ BBox() [15/18]

BBox::BBox ( const BBox & a,
const BBox & b )
inline

Definition at line 72 of file tuto_bvh2_gltf_brdf.cpp.

72: pmin(min(a.pmin, b.pmin)), pmax(max(a.pmax, b.pmax)) {}

◆ BBox() [16/18]

BBox::BBox ( )
inline

Definition at line 39 of file tuto_englobant.cpp.

39: pmin(), pmax() {}

◆ BBox() [17/18]

BBox::BBox ( const Point & p)
inline

Definition at line 41 of file tuto_englobant.cpp.

41: pmin(p), pmax(p) {}

◆ BBox() [18/18]

BBox::BBox ( const BBox & box)
inline

Definition at line 42 of file tuto_englobant.cpp.

42: pmin(box.pmin), pmax(box.pmax) {}

Member Function Documentation

◆ insert() [1/10]

BBox & BBox::insert ( const Point & p)
inline

Definition at line 55 of file tuto_bvh.cpp.

55{ pmin= min(pmin, p); pmax= max(pmax, p); return *this; }

◆ insert() [2/10]

BBox & BBox::insert ( const BBox & box)
inline

Definition at line 56 of file tuto_bvh.cpp.

56{ pmin= min(pmin, box.pmin); pmax= max(pmax, box.pmax); return *this; }

◆ centroid() [1/8]

float BBox::centroid ( const int axis) const
inline

Definition at line 58 of file tuto_bvh.cpp.

58{ return (pmin(axis) + pmax(axis)) / 2; }

◆ intersect() [1/7]

BBoxHit BBox::intersect ( const RayHit & ray) const
inline

Definition at line 60 of file tuto_bvh.cpp.

61 {
62 Vector invd= Vector(1 / ray.d.x, 1 / ray.d.y, 1 / ray.d.z);
63 return intersect(ray, invd);
64 }

◆ intersect() [2/7]

BBoxHit BBox::intersect ( const RayHit & ray,
const Vector & invd ) const
inline

Definition at line 66 of file tuto_bvh.cpp.

67 {
68 Point rmin= pmin;
69 Point rmax= pmax;
70 if(ray.d.x < 0) std::swap(rmin.x, rmax.x);
71 if(ray.d.y < 0) std::swap(rmin.y, rmax.y);
72 if(ray.d.z < 0) std::swap(rmin.z, rmax.z);
73 Vector dmin= (rmin - ray.o) * invd;
74 Vector dmax= (rmax - ray.o) * invd;
75
76 float tmin= std::max(dmin.z, std::max(dmin.y, std::max(dmin.x, 0.f)));
77 float tmax= std::min(dmax.z, std::min(dmax.y, std::min(dmax.x, ray.t)));
78 return BBoxHit(tmin, tmax);
79 }

◆ insert() [3/10]

BBox & BBox::insert ( const Point & p)
inline

Definition at line 69 of file tuto_bvh2.cpp.

69{ pmin= min(pmin, p); pmax= max(pmax, p); return *this; }

◆ insert() [4/10]

BBox & BBox::insert ( const BBox & box)
inline

Definition at line 70 of file tuto_bvh2.cpp.

70{ pmin= min(pmin, box.pmin); pmax= max(pmax, box.pmax); return *this; }

◆ centroid() [2/8]

float BBox::centroid ( const int axis) const
inline

Definition at line 72 of file tuto_bvh2.cpp.

72{ return (pmin(axis) + pmax(axis)) / 2; }

◆ centroid() [3/8]

Point BBox::centroid ( ) const
inline

Definition at line 73 of file tuto_bvh2.cpp.

73{ return (pmin + pmax) / 2; }

◆ intersect() [3/7]

BBoxHit BBox::intersect ( const Ray & ray,
const Vector & invd,
const float htmax ) const
inline

Definition at line 75 of file tuto_bvh2.cpp.

76 {
77 Point rmin= pmin;
78 Point rmax= pmax;
79 if(ray.d.x < 0) std::swap(rmin.x, rmax.x);
80 if(ray.d.y < 0) std::swap(rmin.y, rmax.y);
81 if(ray.d.z < 0) std::swap(rmin.z, rmax.z);
82 Vector dmin= (rmin - ray.o) * invd;
83 Vector dmax= (rmax - ray.o) * invd;
84
85 float tmin= std::max(dmin.z, std::max(dmin.y, std::max(dmin.x, 0.f)));
86 float tmax= std::min(dmax.z, std::min(dmax.y, std::min(dmax.x, htmax)));
87 return BBoxHit(tmin, tmax);
88 }

◆ insert() [5/10]

BBox & BBox::insert ( const Point & p)
inline

Definition at line 74 of file tuto_bvh2_gltf.cpp.

74{ pmin= min(pmin, p); pmax= max(pmax, p); return *this; }

◆ insert() [6/10]

BBox & BBox::insert ( const BBox & box)
inline

Definition at line 75 of file tuto_bvh2_gltf.cpp.

75{ pmin= min(pmin, box.pmin); pmax= max(pmax, box.pmax); return *this; }

◆ centroid() [4/8]

float BBox::centroid ( const int axis) const
inline

Definition at line 77 of file tuto_bvh2_gltf.cpp.

77{ return (pmin(axis) + pmax(axis)) / 2; }

◆ centroid() [5/8]

Point BBox::centroid ( ) const
inline

Definition at line 78 of file tuto_bvh2_gltf.cpp.

78{ return (pmin + pmax) / 2; }

◆ intersect() [4/7]

BBoxHit BBox::intersect ( const Ray & ray,
const Vector & invd,
const float htmax ) const
inline

Definition at line 80 of file tuto_bvh2_gltf.cpp.

81 {
82 Point rmin= pmin;
83 Point rmax= pmax;
84 if(ray.d.x < 0) std::swap(rmin.x, rmax.x);
85 if(ray.d.y < 0) std::swap(rmin.y, rmax.y);
86 if(ray.d.z < 0) std::swap(rmin.z, rmax.z);
87 Vector dmin= (rmin - ray.o) * invd;
88 Vector dmax= (rmax - ray.o) * invd;
89
90 float tmin= std::max(dmin.z, std::max(dmin.y, std::max(dmin.x, 0.f)));
91 float tmax= std::min(dmax.z, std::min(dmax.y, std::min(dmax.x, htmax)));
92 return BBoxHit(tmin, tmax);
93 }

◆ insert() [7/10]

BBox & BBox::insert ( const Point & p)
inline

Definition at line 74 of file tuto_bvh2_gltf_brdf.cpp.

74{ pmin= min(pmin, p); pmax= max(pmax, p); return *this; }

◆ insert() [8/10]

BBox & BBox::insert ( const BBox & box)
inline

Definition at line 75 of file tuto_bvh2_gltf_brdf.cpp.

75{ pmin= min(pmin, box.pmin); pmax= max(pmax, box.pmax); return *this; }

◆ centroid() [6/8]

float BBox::centroid ( const int axis) const
inline

Definition at line 77 of file tuto_bvh2_gltf_brdf.cpp.

77{ return (pmin(axis) + pmax(axis)) / 2; }

◆ centroid() [7/8]

Point BBox::centroid ( ) const
inline

Definition at line 78 of file tuto_bvh2_gltf_brdf.cpp.

78{ return (pmin + pmax) / 2; }

◆ intersect() [5/7]

BBoxHit BBox::intersect ( const Ray & ray,
const Vector & invd,
const float htmax ) const
inline

Definition at line 80 of file tuto_bvh2_gltf_brdf.cpp.

81 {
82 Point rmin= pmin;
83 Point rmax= pmax;
84 if(ray.d.x < 0) std::swap(rmin.x, rmax.x);
85 if(ray.d.y < 0) std::swap(rmin.y, rmax.y);
86 if(ray.d.z < 0) std::swap(rmin.z, rmax.z);
87 Vector dmin= (rmin - ray.o) * invd;
88 Vector dmax= (rmax - ray.o) * invd;
89
90 float tmin= std::max(dmin.z, std::max(dmin.y, std::max(dmin.x, 0.f)));
91 float tmax= std::min(dmax.z, std::min(dmax.y, std::min(dmax.x, htmax)));
92 return BBoxHit(tmin, tmax);
93 }

◆ insert() [9/10]

BBox & BBox::insert ( const Point & p)
inline

Definition at line 44 of file tuto_englobant.cpp.

44{ pmin= min(pmin, p); pmax= max(pmax, p); return *this; }

◆ insert() [10/10]

BBox & BBox::insert ( const BBox & box)
inline

Definition at line 45 of file tuto_englobant.cpp.

45{ pmin= min(pmin, box.pmin); pmax= max(pmax, box.pmax); return *this; }

◆ centroid() [8/8]

float BBox::centroid ( const int axis) const
inline

Definition at line 47 of file tuto_englobant.cpp.

47{ return (pmin(axis) + pmax(axis)) / 2; }

◆ intersect() [6/7]

bool BBox::intersect ( const RayHit & ray) const
inline

Definition at line 49 of file tuto_englobant.cpp.

50 {
51 Vector invd= Vector(1 / ray.d.x, 1 / ray.d.y, 1 / ray.d.z);
52 return intersect(ray, invd);
53 }

◆ intersect() [7/7]

bool BBox::intersect ( const RayHit & ray,
const Vector & invd ) const
inline

Definition at line 55 of file tuto_englobant.cpp.

56 {
57 Point rmin= pmin;
58 Point rmax= pmax;
59 if(ray.d.x < 0) std::swap(rmin.x, rmax.x);
60 if(ray.d.y < 0) std::swap(rmin.y, rmax.y);
61 if(ray.d.z < 0) std::swap(rmin.z, rmax.z);
62 Vector dmin= (rmin - ray.o) * invd;
63 Vector dmax= (rmax - ray.o) * invd;
64
65 float tmin= std::max(dmin.z, std::max(dmin.y, std::max(dmin.x, 0.f)));
66 float tmax= std::min(dmax.z, std::min(dmax.y, std::min(dmax.x, ray.t)));
67 return (tmin <= tmax);
68 }

Member Data Documentation

◆ pmin

Point BBox::pmin

Definition at line 48 of file tuto_bvh.cpp.

◆ pmax

Point BBox::pmax

Definition at line 48 of file tuto_bvh.cpp.


The documentation for this struct was generated from the following files: