55 double min_step_size)
const {
56 assert(
int(direction) >= 3 - dim &&
int(direction) <= 3);
57 if (this->max_steps) max_steps = this->max_steps;
58 if (this->min_step_size) min_step_size = this->min_step_size;
59 unsigned steps =
min(
unsigned(2. * radius / min_step_size), max_steps);
60 double step = 2. * radius /
steps;
61 for (
unsigned i = 0; i <=
steps; ++i) points.insert(i * step - radius);
67 double min_step_size)
const {
69 if (this->max_steps) max_steps = this->max_steps;
70 if (this->min_step_size) min_step_size = this->min_step_size;
72 unsigned steps =
min(
unsigned(
M_PI * radius / min_step_size), max_steps);
74 double x0 = radius,
y0 = 0;
75 for (
unsigned i = 1; i <= (
steps + 1) / 2; ++i) {
91 unsigned steps =
min(
unsigned(2. * radius / min_step_size), max_steps);
92 double step = 2. * radius /
steps;
93 double radius2 = radius * radius;
94 double x0 = sqrt(0.5 * step * radius);
96 segments.insert(Segment(
DVec(0., -radius),
DVec(-
x0, -
y0)));
97 segments.insert(Segment(
DVec(0., -radius),
DVec(
x0, -
y0)));
98 segments.insert(Segment(
DVec(0., radius),
DVec(-
x0,
y0)));
99 segments.insert(Segment(
DVec(0., radius),
DVec(
x0,
y0)));
102 segments.insert(Segment(
DVec(0., -radius),
DVec(0., radius)));
105 for (
unsigned i = 1; i <= (
steps + 1) / 2; ++i) {
106 double y1 = radius - i * step;
108 segments.insert(Segment(
DVec(-
x1, -y1),
DVec(
x1, -y1)));
116 segments.insert(Segment(
DVec(-
x1, -y1),
DVec(-
x1, y1)));