38 Point3(
const double x_,
const double y_,
const double z_):
42 r(0),g(0),b(0),a(0),bHasColor(false)
51 Point3(
const double x_,
const double y_,
const double z_,
unsigned char r_,
unsigned char g_,
unsigned char b_,
unsigned char a_):
68 Point3():coordX(0),coordY(0),coordZ(0),r(0),g(0),b(0),a(0),bHasColor(false)
81 r(p_.r),g(p_.g),b(p_.b),a(p_.a),bHasColor(p_.bHasColor)
98 bHasColor=other.bHasColor;
112 void setColor(
unsigned char r_,
unsigned char g_,
unsigned char b_,
unsigned char a_)
127 void getColor_255(
unsigned char& r_,
unsigned char& g_,
unsigned char& b_,
unsigned char& a_)
const
142 r_=
static_cast<float>(r);
143 g_=
static_cast<float>(g);
144 b_=
static_cast<float>(b);
145 a_=
static_cast<float>(a);
156 std::stringstream ss;
157 ss<<r<<
" "<<g<<
" "<<b<<
" "<<a;
165 void getColor_1(
float& r_,
float& g_,
float& b_,
float& a_)
const
218 void xyz(
double& x_,
double& y_,
double& z_)
const
252 inline void addOwnColor(
float& r_,
float& g_,
float& b_,
float& a_)
const
262 inline void addOwnColorW(
float w,
float& r_,
float& g_,
float& b_,
float& a_)
const
281 bHasColor=other.bHasColor;
293 r=
static_cast<unsigned char>(.5*(float(other0.r)+float(other1.r))+.5f);
294 g=
static_cast<unsigned char>(.5*(float(other0.g)+float(other1.g))+.5f);
295 b=
static_cast<unsigned char>(.5*(float(other0.b)+float(other1.b))+.5f);
296 a=
static_cast<unsigned char>(.5*(float(other0.a+other1.a))+.5f);
302 copyColorFrom(other0);
307 copyColorFrom(other0);
333 if(coordX<p.coordX)
return true;
334 if(coordX>p.coordX)
return false;
335 if(coordY<p.coordY)
return true;
336 if(coordY>p.coordY)
return false;
337 return coordZ<p.coordZ;
349 if(coordX>p.coordX)
return true;
350 if(coordX<p.coordX)
return false;
351 if(coordY>p.coordY)
return true;
352 if(coordY<p.coordY)
return false;
353 return coordY>p.coordY;
361 if(coordX==p.coordX && coordY==p.coordY && coordZ==p.coordZ)
return true;
370 return (coordX!=p.coordX || coordY!=p.coordY || coordZ!=p.coordZ);
380 void set(
const double x_,
const double y_,
const double z_)
410 double xdiff(x()-other.
x());
411 double ydiff(y()-other.
y());
412 double zdiff(z()-other.
z());
413 return Vector3(xdiff,ydiff,zdiff);
422 return Point3(x()+vec.
x(),y()+vec.
y(),z()+vec.
z());
432 return Point3(x()-vec.
x(),y()-vec.
y(),z()-vec.
z());
436 friend std::ostream &operator<<(std::ostream &stream,
const Point3& pnt);
437 friend std::istream &operator>>(std::istream &stream,
Point3& pnt);
445 unsigned char r,g,b,a;
457 inline std::ostream &operator<<(std::ostream &stream,
const Point3& pnt)
461 stream <<
"Point3 ("<<&pnt<<
"): "<<pnt.x()<<
", "<<pnt.y()<<
", "<<pnt.z()<<
", color("<<int(pnt.r)<<
","<<int(pnt.g)<<
","<<int(pnt.b)<<
","<<int(pnt.a)<<
")";
465 stream <<
"Point3 ("<<&pnt<<
"): "<<pnt.x()<<
", "<<pnt.y()<<
", "<<pnt.z()<<
", no color";
470 inline std::istream &operator>>(std::istream &stream, Point3& pnt)
472 stream >> pnt.coordX >> pnt.coordY >> pnt.coordZ;
481 double deltaX=p1.
x()-p0.
x();
482 double deltaY=p1.
y()-p0.
y();
483 double deltaZ=p1.
z()-p0.
z();
484 return (deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
491 double deltaX=p1->
x()-p0->
x();
492 double deltaY=p1->
y()-p0->
y();
493 double deltaZ=p1->
z()-p0->
z();
494 return (deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
502 double deltaX=p1.
x()-p0.
x();
503 double deltaY=p1.
y()-p0.
y();
504 double deltaZ=p1.
z()-p0.
z();
505 return sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
3D Point
Definition: Point3.h:31
bool operator<(const Point3 &p) const
Less than operator.
Definition: Point3.h:331
void copyColorFrom(const Point3 &other)
Copy the color from another point.
Definition: Point3.h:275
double x() const
Get the x-coordinate.
Definition: Point3.h:185
Point3 & operator=(const Point3 &other)
operator=
Definition: Point3.h:89
Point3 operator-(const Vector3 &vec) const
operator-
Definition: Point3.h:430
double y() const
Get the y-coordinate.
Definition: Point3.h:195
void addOwnCoordsW(double &x, double &y, double &z, double w) const
Add the point's coordinates to x,y,z.
Definition: Point3.h:243
Point3()
Default constructor.
Definition: Point3.h:68
Vector3 operator-(const Point3 &other) const
operator-
Definition: Point3.h:408
void set(const double x_, const double y_, const double z_)
Set the coordiantes.
Definition: Point3.h:380
bool operator!=(const Point3 &p) const
Inequality operator.
Definition: Point3.h:368
Point3 operator+(const Vector3 &vec) const
operator+
Definition: Point3.h:420
void addOwnCoords(double &x, double &y, double &z) const
Add the point's coordinates to x,y,z.
Definition: Point3.h:231
~Point3()
Destructor.
Definition: Point3.h:104
Point3(const double x_, const double y_, const double z_, unsigned char r_, unsigned char g_, unsigned char b_, unsigned char a_)
Constructor with color.
Definition: Point3.h:51
void xyz(double &x_, double &y_, double &z_) const
Get the x-, y- and z-coordinate.
Definition: Point3.h:218
void set(const Point3 &pnt)
Set the coordiantes.
Definition: Point3.h:393
void getColor_255(unsigned char &r_, unsigned char &g_, unsigned char &b_, unsigned char &a_) const
Get color (unsigned char, range=0, ..., 255)
Definition: Point3.h:127
bool hasColor() const
Has color.
Definition: Point3.h:176
bool operator>(const Point3 &p) const
Greater than operator.
Definition: Point3.h:347
bool operator==(const Point3 &p) const
Equality operator.
Definition: Point3.h:359
void copyColorFrom(const Point3 &other0, const Point3 &other1)
Copy the average color from two points.
Definition: Point3.h:289
double z() const
Get the z-coordinate.
Definition: Point3.h:205
void addWeightedOwnCoords(double weight, double &x, double &y, double &z) const
Add the point's weighted coordinates to x,y,z.
Definition: Point3.h:318
void getColor_1(float &r_, float &g_, float &b_, float &a_) const
Get color (float, range=0.0, ..., 1.0)
Definition: Point3.h:165
void getColor_255(float &r_, float &g_, float &b_, float &a_) const
Get color (float, range=0, ..., 255)
Definition: Point3.h:140
Point3(const Point3 &p_)
Copy constructor.
Definition: Point3.h:77
Point3(const double x_, const double y_, const double z_)
Constructor without color.
Definition: Point3.h:38
std::string getColorString()
Get color string (string, range=0.0, ..., 1.0)
Definition: Point3.h:152
void setColor(unsigned char r_, unsigned char g_, unsigned char b_, unsigned char a_)
Set color.
Definition: Point3.h:112
3D Vector
Definition: Vector3.h:27
double z() const
Get the z-value.
Definition: Vector3.h:112
double x() const
Get the x-value.
Definition: Vector3.h:93
double y() const
Get the y-value.
Definition: Vector3.h:102
double sqDistance(const Point3 &p0, const Point3 &p1)
Get the squared distance between two points.
Definition: Point3.h:479
Point3 center(const Point3 &p0, const Point3 &p1)
Midpoint of p0 and p1.
Definition: Point3.h:512
double distance(const Point3 &p0, const Point3 &p1)
Get the distance between two points.
Definition: Point3.h:500