34 if (!this->hasChild() || repeat_count == 0)
return std::make_pair(1, 0);
35 auto box = _child->getBoundingBox();
36 int hi = repeat_count - 1, lo = 0;
37 for (
int i = 0; i != dim; ++i) {
38 if (translation[i] > 0.) {
39 lo =
max(1 +
int(std::floor((
vec[i] -
box.upper[i]) / translation[i])), lo);
40 hi =
min(
int(std::floor((
vec[i] -
box.lower[i]) / translation[i])), hi);
41 }
else if (translation[i] < 0.) {
42 lo =
max(1 +
int(std::floor((
vec[i] -
box.lower[i]) / translation[i])), lo);
43 hi =
min(
int(std::floor((
vec[i] -
box.upper[i]) / translation[i])), hi);
44 }
else if (
vec[i] <
box.lower[i] ||
box.upper[i] <
vec[i]) {
45 return std::make_pair(1, 0);
48 return std::make_pair(lo, hi);
204 double min_step_size)
const {
205 if (!this->hasChild())
return;
207 _child->addPointsAlongToSet(
child_points, direction, this->max_steps ? this->max_steps : max_steps,
208 this->min_step_size ? this->min_step_size : min_step_size);
209 for (
int i = 0; i < repeat_count; ++i) {
210 double trans = i * translation[
int(direction) - (3 - dim)];
218 double min_step_size)
const {
219 if (!this->hasChild())
return;
220 std::set<typename GeometryObjectD<dim>::LineSegment>
child_segments;
221 _child->addLineSegmentsToSet(
child_segments, this->max_steps ? this->max_steps : max_steps,
222 this->min_step_size ? this->min_step_size : min_step_size);
223 for (
int i = 0; i < repeat_count; ++i) {
224 DVec trans = i * translation;