50 :x(v.x),y(v.y),z(v.z){}
53 XYZ(
float vx,
float vy,
float vz)
60 typedef float XYZ::* ElementPtr;
88 const float ik(1.0/k);
121 return XYZ(-x,-y,-z);
143 std::ostream&
write(std::ostream&)
const;
170 return a.x*b.x+a.y*b.y+a.z*b.z;
176 return XYZ(a.x+b.x,a.y+b.y,a.z+b.z);
182 return XYZ(a.x-b.x,a.y-b.y,a.z-b.z);
188 return XYZ(k*v.x,k*v.y,k*v.z);
194 return XYZ(k*v.x,k*v.y,k*v.z);
206 return (a.x==b.x && a.y==b.y && a.z==b.z);
212 return (a.x!=b.x || a.y!=b.y || a.z!=b.z);
Generates a random point in or on a unit-radius sphere centred on the origin.
Definition: xyz.h:252
Generates a random point in the cube bounded by (0,0,0) and (1.0,1.0,1.0)
Definition: xyz.h:238
const float & element(uint e) const
Access by number.
Definition: xyz.h:64
float & element(uint e)
Access by number.
Definition: xyz.h:70
XYZ(float vx, float vy, float vz)
Initialise from separate components.
Definition: xyz.h:53
float magnitude2() const
Return the square of the magnitude.
Definition: xyz.h:125
Generates random points in a recnangular box centred on the origin.
Definition: xyz.h:245
std::ostream & write(std::ostream &) const
Write the vector (spaces as separators).
Definition: xyz.cpp:28
float operator%(const XYZ &a, const XYZ &b)
Dot product.
Definition: xyz.h:168
std::ostream & operator<<(std::ostream &out, const XYZ &v)
Stream output operator.
Definition: xyz.h:232
bool operator==(const XYZ &a, const XYZ &b)
Equality operator.
Definition: xyz.h:204
const XYZ operator-() const
Negation.
Definition: xyz.h:119
void assign(const XYZ &v)
Assignment.
Definition: xyz.h:111
Class to hold vectors in 3D cartesian co-ordinates.
Definition: xyz.h:34
float magnitude() const
Return the magnitude.
Definition: xyz.h:131
const std::string format_comma() const
Alternate formatting.
Definition: xyz.cpp:33
void normalise()
Normalise this vector.
Definition: xyz.h:226
const XYZ operator-(const XYZ &a, const XYZ &b)
Vector subtraction.
Definition: xyz.h:180
const std::string format_blender() const
Alternate formatting.
Definition: xyz.cpp:40
void operator*=(float k)
Multiply by scalar.
Definition: xyz.h:76
Generates random numbers in the range [0,1).
Definition: random.h:28
RandomXYZInEllipsoid(Random01 &rng, const XYZ &axes)
Definition: xyz.cpp:87
Generates a random point in or on an origin-centred ellipsoid with semi-axes of the specified size...
Definition: xyz.h:259
const XYZ operator+(const XYZ &a, const XYZ &b)
Vector addition.
Definition: xyz.h:174
const XYZ operator*(const XYZ &a, const XYZ &b)
Cross product.
Definition: xyz.h:156
bool operator!=(const XYZ &a, const XYZ &b)
Inequality operator.
Definition: xyz.h:210
Generates a random point on the surface of a unit-radius sphere.
Definition: xyz.h:266
Interface for class Random and derived classes.
XYZ()
Null constructor.
Definition: xyz.h:45
void operator+=(const XYZ &v)
Vector addition.
Definition: xyz.h:95
const XYZ operator/(const XYZ &v, float k)
Division by scalar.
Definition: xyz.h:198
const XYZ normalised() const
Return the vector normalised.
Definition: xyz.h:217
static ElementPtr element_table[3]
Definition: xyz.h:61
const std::string format_pov() const
Alternate formatting.
Definition: xyz.cpp:49
void operator-=(const XYZ &v)
Vector subtraction.
Definition: xyz.h:103
~XYZ()
Destructor.
Definition: xyz.h:57
XYZ(const XYZ &v)
Copy constructor.
Definition: xyz.h:49
void operator/=(float k)
Divide by scalar.
Definition: xyz.h:86