Commit 2640a7a9 authored by paps's avatar paps

--no commit message

--no commit message
parent d198debd
/**
* @brief OBJET : une couleur
* @file LrColor.cpp
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'une couleur
*/
#include "config.h"
#include "LrColor.h"
LrColor::LrColor()
: m_r(0), m_g(0), m_b(0)
{
}
LrColor::LrColor(const LrColor & c)
:m_r(c.m_r), m_g(c.m_g), m_b(c.m_b)
{
}
LrColor::LrColor(Real red, Real green, Real blue)
: m_r(red), m_g(green), m_b(blue)
{
}
LrColor::~LrColor()
{
}
Real LrColor::getRed() const
{
return m_r;
}
void LrColor::setRed(Real red)
{
m_r = red;
}
Real LrColor::getGreen() const
{
return m_g;
}
void LrColor::setGreen(Real green)
{
m_g = green;
}
Real LrColor::getBlue() const
{
return m_b;
}
void LrColor::setBlue(Real blue)
{
m_b = blue;
}
void LrColor::toRGB255 (int & red, int & green, int & blue) const
{
red = (int)m_r * 255;
green = (int)m_g * 255;
blue = (int)m_b * 255;
}
void LrColor::fromRGB255 (const int red, const int green, const int blue)
{
m_r = red / 255;
if(m_r > 1) m_r = 1;
if(m_r < 0) m_r = 0;
m_g = green / 255;
if(m_g > 1) m_r = 1;
if(m_g < 0) m_r = 0;
m_b = blue / 255;
if(m_b > 1) m_r = 1;
if(m_b < 0) m_r = 0;
}
LrColor & LrColor::operator = (const LrColor & c)
{
if(this == &c)return (*this);
m_r = c.m_r;
m_g = c.m_g;
m_b = c.m_b;
return (*this);
}
LrColor & LrColor::operator += (const LrColor & c)
{
return (*this = (*this + c));
}
LrColor & LrColor::operator -= (const LrColor & c)
{
return (*this = (*this - c));
}
bool operator == (const LrColor & c_lhs, const LrColor & c_rhs)
{
return ((c_lhs.m_r == c_rhs.m_r) && (c_lhs.m_g == c_rhs.m_g) && (c_lhs.m_b == c_rhs.m_b));
}
bool operator != (const LrColor & c_lhs, const LrColor & c_rhs)
{
return !(c_lhs == c_rhs);
}
LrColor operator + (const LrColor &lhs, const LrColor &rhs)
{
LrColor color;
color.m_r = lhs.m_r + rhs.m_r;
if(color.m_r > 1)color.m_r = 1;
color.m_g = lhs.m_g + rhs.m_g;
if(color.m_g > 1)color.m_g = 1;
color.m_b = lhs.m_b + rhs.m_b;
if(color.m_b > 1)color.m_b = 1;
return color;
}
LrColor operator - (const LrColor &lhs, const LrColor &rhs)
{
LrColor color;
color.m_r = lhs.m_r - rhs.m_r;
if(color.m_r < 0)color.m_r = 0;
color.m_g = lhs.m_g - rhs.m_g;
if(color.m_g < 0)color.m_g = 0;
color.m_b = lhs.m_b - rhs.m_b;
if(color.m_b < 0)color.m_b = 0;
return color;
}
/*****************************************************************************
* class LrColor (specification) *
* *
* author : Gilles Subrenat *
* creation : Sunday, March 2 2008 (3/2/2008) *
* note : *
*****************************************************************************/
#ifndef LRCOLOR_H
#define LRCOLOR_H
class LrColor
{
public:
static const LrColor BLACK;
static const LrColor WHITE;
static const LrColor RED;
static const LrColor GREEN;
static const LrColor BLUE;
static const LrColor CYAN;
static const LrColor MAGENTA;
static const LrColor YELLOW;
// constructors and destructor
// ***************************
LrColor();
LrColor(const LrColor &source);
LrColor(Real red, Real green, Real blue);
explicit LrColor(Real grey);
virtual ~LrColor();
// assignement operator(s)
// ***********************
LrColor & operator = (const LrColor &source);
LrColor & operator += (const LrColor &source);
LrColor & operator += (Real grey);
LrColor & operator -= (const LrColor &source);
LrColor & operator -= (Real grey);
LrColor & operator *= (const LrColor &source);
LrColor & operator *= (Real factor);
LrColor & operator /= (Real factor);
// comparison operator(s)
// **********************
friend bool operator == (const LrColor &lhs, const LrColor &rhs);
friend bool operator != (const LrColor &lhs, const LrColor &rhs);
// "mathematical" operator(s)
// **************************
friend LrColor operator + (const LrColor &lhs, const LrColor &rhs);
friend LrColor operator + (Real lhs, const LrColor &rhs);
friend LrColor operator + (const LrColor &lhs, Real rhs);
friend LrColor operator - (const LrColor &lhs, const LrColor &rhs);
friend LrColor operator - (Real lhs, const LrColor &rhs);
friend LrColor operator - (const LrColor &lhs, Real rhs);
friend LrColor operator * (const LrColor &lhs, const LrColor &rhs);
friend LrColor operator * (Real lhs, const LrColor &rhs);
friend LrColor operator * (const LrColor &lhs, Real rhs);
friend LrColor operator / (const LrColor &lhs, Real rhs);
// accessors
// *********
Real getRed() const;
void setRed(Real red);
Real getGreen() const;
void setGreen(Real green);
Real getBlue() const;
void setBlue(Real blue);
void setRGB(Real red, Real green, Real blue);
Real getGrey() const;
void setGrey(Real grey);
Real getLuminosity() const;
private:
// data
// ****
Real m_red;
Real m_green;
Real m_blue;
};
#endif
/**
* @brief OBJET : une couleur
* @file LrColor.h
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'une couleur
*/
#ifndef LRCOLOR_h
#define LRCOLOR_h
class LrColor
{
private :
Real m_r;
Real m_g;
Real m_b;
public :
LrColor();
LrColor(const LrColor & c);
LrColor(Real red, Real green, Real blue);
~LrColor();
LrColor & operator = (const LrColor & c);
LrColor & operator += (const LrColor & c);
LrColor & operator -= (const LrColor & c);
Real getRed() const;
void setRed(Real red);
Real getGreen() const;
void setGreen(Real green);
Real getBlue() const;
void setBlue(Real blue);
/*met � jour les parametre rentrant en convertissant l
es valeur real de l'instance au format RGB 255*/
void toRGB255 (int & red, int & green, int & blue) const;
/*Modifie les valeurs de l'instance � partir de valeurs RGB255*/
void fromRGB255 (const int red, const int green, const int blue);
friend bool operator == (const LrColor & c_lhs, const LrColor & c_rhs);
friend bool operator != (const LrColor & c_lhs, const LrColor & c_rhs);
friend LrColor operator + (const LrColor &lhs, const LrColor &rhs);
friend LrColor operator - (const LrColor &lhs, const LrColor &rhs);
};
#endif
/**
* @brief OBJET : un point 3D
* @file LrPoint.cpp
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'un point 3D
*/
#include "config.h"
#include "LrPoint.h"
/*---------------------------------------------------------------------------*
* constructors and destructor *
*---------------------------------------------------------------------------*/
LrPoint::LrPoint()
:x(0), y(0), z(0)
:m_x(0), m_y(0), m_z(0)
{
}
LrPoint::LrPoint(const LrPoint &source)
:x(source.x), y(source.y), z(source.z)
:m_x(source.m_x), m_y(source.m_y), m_z(source.m_z)
{
}
LrPoint::LrPoint(Real x, Real y, Real z)
:x(x), y(y), z(z)
:m_x(x), m_y(y), m_z(z)
{
}
......@@ -29,9 +44,9 @@ LrPoint::~LrPoint()
void LrPoint::translate(const LrVector &v)
{
x+=v.getCompo(X);
y+=v.getCompo(Y);
z+=v.getCompo(Z);
m_x+=v.getCompo(X);
m_y+=v.getCompo(Y);
m_z+=v.getCompo(Z);
}
/*---------------------------------------------------------------------------*
* assignement operator(s) *
......@@ -39,9 +54,9 @@ void LrPoint::translate(const LrVector &v)
LrPoint & LrPoint::operator = (const LrPoint &source)
{
if(this == &source) return (*this);
this->x = source.x;
this->y = source.y;
this->z = source.z;
m_x = source.m_x;
m_y = source.m_y;
m_z = source.m_z;
return (*this);
}
......@@ -51,7 +66,7 @@ LrPoint & LrPoint::operator = (const LrPoint &source)
bool operator == (const LrPoint &lhs, const LrPoint &rhs)
{
return ((lhs.x == rhs.x) && (lhs.y == rhs.y) && (lhs.z == rhs.z));
return ((lhs.m_x == rhs.m_x) && (lhs.m_y == rhs.m_y) && (lhs.m_z == rhs.m_z));
}
bool operator != (const LrPoint &lhs, const LrPoint &rhs)
......@@ -63,12 +78,12 @@ bool operator != (const LrPoint &lhs, const LrPoint &rhs)
*---------------------------------------------------------------------------*/
static Real distance(const LrPoint &p1, const LrPoint &p2)
{
return sqrt(pow((p2.x - p1.x),2)+ pow((p2.y - p1.y),2)+ pow((p2.z - p1.z),2));
return sqrt(pow((p2.m_x - p1.m_x),2)+ pow((p2.m_y - p1.m_y),2)+ pow((p2.m_z - p1.m_z),2));
}
static LrPoint middle(const LrPoint &p1, const LrPoint &p2)
{
LrPoint point((p2.x - p1.x), (p2.y - p1.y), (p2.z - p1.z));
LrPoint point((p2.m_x - p1.m_x), (p2.m_y - p1.m_y), (p2.m_z - p1.m_z));
return point;
}
......@@ -76,11 +91,12 @@ static LrPoint interpolate(Real t, const LrPoint &p1,const LrPoint &p2)
{
}
static LrPoint translate( const LrPoint &p, const LrVector &v)
{
LrPoint point;
point.x = x + v.getCompo(X);
point.y = y + v.getCompo(Y);
point.z = z + v.getCompo(Z);
point.m_x = p.m_x + v.getCompo(X);
point.m_y = p.m_y + v.getCompo(Y);
point.m_z = p.m_z + v.getCompo(Z);
return point;
}
/*****************************************************************************
* class LrPoint (specification) *
* *
* author : Gilles Subrenat *
* creation : Sunday, March 2 2008 (3/2/2008) *
* note : *
*****************************************************************************/
/**
* @brief OBJET : un point 3D
* @file LrPoint.h
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'un point 3D
*/
#ifndef LRPOINT3D_H
#define LRPOINT3D_H
#include "config.h"
#include <math.h>
class LrVector;
......@@ -74,7 +80,7 @@ public:
// ****
// public members EXCEPTIONNALY : to simplify use of this class
Real x, y, z;
Real m_x, m_y, m_z;
private:
......
/**
* @brief OBJET : un vecteur 3D
* @file LrVector.cpp
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'un vecteur 3D
*/
#include "config.h"
#include "LrVector.h"
////////////////////////////// CONSTRUCTEURS ///////////////////////////////////////////////////////
//Par defaut
......
/**
* @brief OBJET : un vecteur 3D
* @file LrVector.h
* @date Vendredi 7 mars 2008
* @note
* @author Josselin Francois
* @author Michael Nauge
* @author Axel Richard
* @author Hervé Souchaud
* @author Emeric Verschuur
*
* Ce fichier contient la classe qui gère la creation d'un vecteur 3D
*/
#ifndef VECTEURS_H
#define VECTEURS_H
#include <math.h>
#include "config.h"
#define X 0;
#define Y 1;
#define Z 2;
class LrPoint;
......
......@@ -22,6 +22,15 @@ typedef double Real;
#define REAL_FORMAT "%lf"
#endif
#ifndef X
#define X 0
#endif
#ifndef Y
#define Y 1
#endif
#ifndef Z
#define Z 2
#endif
/*---------------------------------------------------------------------------*
* Some constants *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment