Files
computer-graphics/Hidden-lineRemoval/RGB.cpp
T
2024-11-07 14:01:22 +08:00

130 lines
2.2 KiB
C++

// CRGB.cpp: implementation of the CRGB class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Test.h"
#include "RGB.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRGB::CRGB()
{
red=1.0;
green=1.0;
blue=1.0;
}
CRGB::CRGB(double r,double g,double b)//重载构造函数
{
red=r;
green=g;
blue=b;
}
CRGB::~CRGB()
{
}
CRGB operator +(const CRGB &c1,const CRGB &c2)//+运算符重载
{
CRGB c;
c.red=c1.red+c2.red;
c.green=c1.green+c2.green;
c.blue=c1.blue+c2.blue;
return c;
}
CRGB operator -(const CRGB &c1,const CRGB &c2)//-运算符重载
{
CRGB c;
c.red=c1.red-c2.red;
c.green=c1.green-c2.green;
c.blue=c1.blue-c2.blue;
return c;
}
CRGB operator *(const CRGB &c1,const CRGB &c2)//*运算符重载
{
CRGB c;
c.red=c1.red*c2.red;
c.green=c1.green*c2.green;
c.blue=c1.blue*c2.blue;
return c;
}
CRGB operator *(const CRGB &c1,double k)//*运算符重载
{
CRGB c;
c.red=k*c1.red;
c.green=k*c1.green;
c.blue=k*c1.blue;
return c;
}
CRGB operator *(double k,const CRGB &c1)//*运算符重载
{
CRGB c;
c.red=k*c1.red;
c.green=k*c1.green;
c.blue=k*c1.blue;
return c;
}
CRGB operator /(const CRGB &c1,double k)///运算符重载
{
CRGB c;
c.red=c1.red/k;
c.green=c1.green/k;
c.blue=c1.blue/k;
return c;
}
CRGB operator +=(CRGB &c1,CRGB &c2)//+=运算符重载
{
c1.red=c1.red+c2.red;
c1.green=c1.green+c2.green;
c1.blue=c1.blue+c2.blue;
return c1;
}
CRGB operator -=(CRGB &c1,CRGB &c2)//-=运算符重载
{
c1.red=c1.red-c2.red;
c1.green=c1.green-c2.green;
c1.blue=c1.blue-c2.blue;
return c1;
}
CRGB operator *=(CRGB &c1,CRGB &c2)//*=运算符重载
{
c1.red=c1.red*c2.red;
c1.green=c1.green*c2.green;
c1.blue=c1.blue*c2.blue;
return c1;
}
CRGB operator /=(CRGB &c1,double k)///=运算符重载
{
c1.red=c1.red/k;
c1.green=c1.green/k;
c1.blue=c1.blue/k;
return c1;
}
void CRGB::Normalize()//归一化
{
red=(red < 0.0) ? 0.0 : ((red > 1.0) ? 1.0 : red);
green=(green < 0.0) ? 0.0 : ((green > 1.0) ? 1.0 : green);
blue=(blue < 0.0) ? 0.0 : ((blue > 1.0) ? 1.0 : blue);
}