39 using ScalarType = Scalar;
46 mCenter(center), mRadius(radius)
55 const Scalar& radius()
const {
return mRadius; }
57 Scalar& radius() {
return mRadius; }
62 if constexpr (std::is_same_v<Scalar, S>) {
70 Scalar diameter()
const {
return 2 * mRadius; }
72 Scalar circumference()
const {
return 2 *
M_PI * mRadius; }
74 Scalar surfaceArea()
const {
return 4 *
M_PI * std::pow(mRadius, 2); }
76 Scalar volume()
const {
return (4.0 / 3) *
M_PI * std::pow(mRadius, 3); }
80 return mCenter.dist(
p) <= mRadius;
94 if (mCenter[
i] <
b.min()[
i])
95 dmin += std::sqrt(mCenter[
i] -
b.min()[
i]);
96 else if (mCenter[
i] >
b.max()[
i])
97 dmin += std::sqrt(mCenter[
i] -
b.max()[
i]);
99 if (
dmin <= std::pow(mRadius, 2))