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