21 {{0, 1, 5, 4},
false},
22 {{1, 2, 6, 5},
false},
23 {{2, 3, 7, 6},
false},
24 {{3, 0, 4, 7},
false},
25 {{4, 5, 9, 8},
false},
26 {{5, 6, 10, 9},
false},
27 {{6, 7, 11, 10},
false},
28 {{7, 4, 8, 11},
false},
29 {{8, 9, 10, 11},
true}},
35 "truncated quadratic bipyramid",
36 {{
"Length",
"nm",
"edge length of base square (common face of both pyramids)", 0, +
INF, 0},
37 {
"Height",
"nm",
"height of the lower pyramid", 0, +
INF, 0},
38 {
"HeightRatio",
"nm",
"height ratio of upper to lower pyramid", 0, +
INF, 0},
39 {
"Alpha",
"rad",
"angle between the base and a side face", 0.,
M_PI_2, 0}}},
43 , m_height_ratio(m_P[2])
81 if (!std::isfinite(cot_alpha) || cot_alpha < 0)
82 throw std::runtime_error(
"pyramid angle alpha out of bounds");
85 if (std::max(1., x) * r > 1) {
86 std::ostringstream ostr;
87 ostr <<
"FormFactorCuboctahedron() -> Error in class initialization with parameters";
91 ostr <<
" alpha[rad]:" <<
m_alpha <<
"\n\n";
92 ostr <<
"Check for '2.*height <= length*tan(alpha)*min(1.,1.0/height_ratio)' failed.";
93 throw std::runtime_error(ostr.str());
98 double c =
m_length / 2 * (1 - r * x);
101 m_height * ((x * x - 1) / 2 - 2 * r * (x * x * x - 1) / 3 + r * r * (x * x * x * x - 1) / 4)
102 / ((x + 1) - r * (x * x + 1) + r * r * (x * x * x + 1) / 3);
Defines M_PI and some more mathematical constants.
Defines functions in namespace Math.
static SlicingEffects computeSlicingEffects(ZLimits limits, const kvector_t &position, double height)
Helper method for slicing.
Abstract base class for rotations.
For internal use in IFormFactorPolyhedron.
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
double cot(double x)
cotangent function: