get_intermediate_points_on_line (const typename Triangulation<dim>::line_iterator &line,
vector<Point<dim> > &points) const;
+ /**
+ * Refer to the general documentation of
+ * this class and the documentation of the
+ * base class.
+ *
+ * Only implemented for @p{dim=3}
+ * and for @p{points.size()==1}.
+ */
+ virtual void
+ get_intermediate_points_on_quad (const typename Triangulation<dim>::quad_iterator &quad,
+ vector<Point<dim> > &points) const;
+
/**
* Return the center of the ball.
*/
};
+#if deal_II_dimension == 2
+
template <>
void
HyperBallBoundary<2>::get_intermediate_points_on_line (
}
}
+#endif
template <int dim>
}
+#if deal_II_dimension == 3
+
+template <>
+void
+HyperBallBoundary<3>::get_intermediate_points_on_quad (
+ const Triangulation<3>::quad_iterator &quad,
+ vector<Point<3> > &points) const
+{
+ Assert(points.size()==1, ExcNotImplemented());
+ StraightBoundary<3>::get_intermediate_points_on_quad (quad, points);
+ Point<3> &middle=points[0];
+
+ middle -= center;
+ // project to boundary
+ middle *= radius / sqrt(middle.square());
+
+ middle += center;
+}
+
+#endif
+
+
+template <int dim>
+void
+HyperBallBoundary<dim>::get_intermediate_points_on_quad (
+ const Triangulation<dim>::quad_iterator &,
+ vector<Point<dim> > &) const
+{
+ Assert(false,ExcNotImplemented());
+}
+
+
template <int dim>
Point<dim>
HyperBallBoundary<dim>::get_center () const