18 namespace JGEOMETRY3D {}
19 namespace JPP {
using namespace JGEOMETRY3D; }
21 namespace JGEOMETRY3D {
44 for (const_iterator i = this->begin(); i != this->end(); ++i) {
46 const double x = dir.
getDot(*i);
50 index = std::distance(this->begin(), i);
130 double thetaMin = theta.getLowerLimit();
131 double thetaMax = theta.getUpperLimit();
133 if (thetaMin < 0.0) { thetaMin = 0.0; }
134 if (thetaMin >
PI) { thetaMin =
PI; }
135 if (thetaMax < 0.0) { thetaMax = 0.0; }
136 if (thetaMax >
PI) { thetaMax =
PI; }
138 if (thetaMax > thetaMin) {
142 const double rad = thetaMax - thetaMin;
143 const double bin = rad / floor(rad/(1.4*grid) + 0.5);
144 const double unit = 2.0 * sqrt(1.0 - cos(grid));
146 for (
double theta = thetaMin; theta < thetaMax + 0.5*bin; theta += bin) {
150 if (theta > 0.5*bin &&
PI - theta > 0.5*bin)
151 step =
PI / floor(
PI*sin(theta)/unit + 0.5);
155 for (
double phi = 0.0; phi < 2.0*
PI - 0.5*step; phi += step) {
Data structure for angles in three dimensions.
void configure(const JAngle3D &dir, const JAngleRange &theta, const double grid)
Configure direction set.
JOmega3D(const JAngle3D &dir, const JAngleRange &theta, const double grid)
Constructor.
JOmega3D()
Default constructor.
Data structure for direction in three dimensions.
double getDot(const JAngle3D &angle) const
Get dot product.
Direction set covering (part of) solid angle.
JOmega3D(const double grid)
Constructor.
int find(const JAngle3D &dir) const
Get index of direction closest to given direction.
Base class for direction set.
JOmega3D(const JAngle3D &dir)
Constructor.