5 #ifndef _SPICA_SPECTRUM_H_
6 #define _SPICA_SPECTRUM_H_
34 const std::vector<double>& values);
42 RGBSpectrum& operator=(
const RGBSpectrum& c);
44 bool operator==(
const RGBSpectrum& c)
const;
46 bool operator!=(
const RGBSpectrum& c)
const;
48 RGBSpectrum& operator+=(
const RGBSpectrum& c);
52 RGBSpectrum& operator+=(
double x);
54 RGBSpectrum& operator-=(
const RGBSpectrum& c);
58 RGBSpectrum& operator-=(
double x);
60 RGBSpectrum& operator*=(
const RGBSpectrum& c);
62 RGBSpectrum& operator*=(
double s);
64 RGBSpectrum& operator/=(
const RGBSpectrum& c);
66 RGBSpectrum& operator/=(
double s);
68 RGBSpectrum operator-()
const;
70 static RGBSpectrum fromXYZ(
double x,
double y,
double z);
72 static RGBSpectrum minimum(
const RGBSpectrum& c1,
const RGBSpectrum& c2);
73 static RGBSpectrum maximum(
const RGBSpectrum& c1,
const RGBSpectrum& c2);
75 static RGBSpectrum sqrt(
const RGBSpectrum& c);
76 static RGBSpectrum exp(
const RGBSpectrum& c);
77 static RGBSpectrum log(
const RGBSpectrum& c);
78 static RGBSpectrum clamp(
const RGBSpectrum& c,
79 const RGBSpectrum& lo = RGBSpectrum(0.0, 0.0, 0.0),
80 const RGBSpectrum& hi = RGBSpectrum(INFTY, INFTY, INFTY));
86 double dot(
const RGBSpectrum& RGBSpectrum)
const;
88 double squaredNorm()
const;
92 inline double red()
const {
return r_; }
94 inline double green()
const {
return g_; }
96 inline double blue()
const {
return b_; }
100 Assertion(i >= 0 && i <= 2,
"Index out of range!!");
101 if (i == 0)
return r_;
102 if (i == 1)
return g_;
103 if (i == 2)
return b_;
108 inline double&
ref(
int i) {
109 Assertion(i >= 0 && i <= 2,
"Index out of range!!");
110 if (i == 0)
return r_;
111 if (i == 1)
return g_;
117 return { r_, g_, b_ };
121 std::string toString()
const;
124 static const int channels = 3;
130 using Spectrum = RGBSpectrum;
145 SPICA_EXPORTS std::ostream& operator<<(std::ostream& os,
const spica::RGBSpectrum& c);
147 #endif // SPICA_RGBSpectrum_H_
double blue() const
Blue component.
Definition: spectrum.h:96
double operator[](int i) const
Element accessor.
Definition: spectrum.h:99
RGB spectrum.
Definition: spectrum.h:18
double green() const
Green component.
Definition: spectrum.h:94
double & ref(int i)
Element accessor.
Definition: spectrum.h:108
RGBSpectrum toRGB() const
Convert to RGB spcetrum.
Definition: spectrum.h:116
double red() const
Red component.
Definition: spectrum.h:92