Initial commit
This commit is contained in:
39
interval.h
Normal file
39
interval.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef INTERVAL_H
|
||||
#define INTERVAL_H
|
||||
|
||||
#include "rayTracer.h"
|
||||
|
||||
class interval {
|
||||
public:
|
||||
double min, max;
|
||||
|
||||
// Fegault interval is empty.
|
||||
interval() : min(+infinity), max(-infinity) {}
|
||||
|
||||
interval(double min, double max) : min(min), max(max) {}
|
||||
|
||||
double size() const {
|
||||
return max - min;
|
||||
}
|
||||
|
||||
bool contains(double x) const {
|
||||
return min <= x && x <= max;
|
||||
}
|
||||
|
||||
bool surrounds(double x) const {
|
||||
return min < x && x < max;
|
||||
}
|
||||
|
||||
double clamp(double x) const {
|
||||
if (x < min) return min;
|
||||
if (x > max) return max;
|
||||
return x;
|
||||
}
|
||||
|
||||
static const interval empty, universe;
|
||||
};
|
||||
|
||||
const interval interval::empty = interval(+infinity, -infinity);
|
||||
const interval interval::universe = interval(-infinity, +infinity);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user