get_new_point_on_quad (const typename Triangulation<dim>::quad_iterator &quad) const;
/**
- * Refer to the general documentation of
- * this class and the documentation of the
+ * Refer to the general
+ * documentation of this class
+ * and the documentation of the
* base class.
*
* Calls
typename std::vector<Point<dim> > &points) const;
/**
- * Refer to the general documentation of
- * this class and the documentation of the
+ * Refer to the general
+ * documentation of this class
+ * and the documentation of the
* base class.
*
* Only implemented for @p{dim=3}
* might be useful for computations with rotational symmetry, where
* one dimension is the radius from the axis of rotation.
*
- * @author Wolfgang Bangerth, 1999
+ * @author Wolfgang Bangerth, 1999, 2001
*/
template <int dim>
class HalfHyperBallBoundary : public HyperBallBoundary<dim>
*/
virtual Point<dim>
get_new_point_on_quad (const typename Triangulation<dim>::quad_iterator &quad) const;
+
+ /**
+ * Refer to the general
+ * documentation of this class
+ * and the documentation of the
+ * base class.
+ *
+ * Calls
+ * @p{get_intermediate_points_between_points}.
+ */
+ virtual void
+ get_intermediate_points_on_line (const typename Triangulation<dim>::line_iterator &line,
+ typename std::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,
+ typename std::vector<Point<dim> > &points) const;
};
HalfHyperBallBoundary<dim>::
get_new_point_on_line (const typename Triangulation<dim>::line_iterator &line) const
{
+ // check whether center of object is
+ // at x==0, since then it belongs
+ // to the plane part of the
+ // boundary
const Point<dim> line_center = line->center();
if (line_center(0) == center(0))
return line_center;
+template <int dim>
+void
+HalfHyperBallBoundary<dim>::
+get_intermediate_points_on_line (const typename Triangulation<dim>::line_iterator &line,
+ typename std::vector<Point<dim> > &points) const
+{
+ // check whether center of object is
+ // at x==0, since then it belongs
+ // to the plane part of the
+ // boundary
+ const Point<dim> line_center = line->center();
+ if (line_center(0) == center(0))
+ return StraightBoundary<dim>::get_intermediate_points_on_line (line, points);
+ else
+ return HyperBallBoundary<dim>::get_intermediate_points_on_line (line, points);
+};
+
+
+
+template <int dim>
+void
+HalfHyperBallBoundary<dim>::
+get_intermediate_points_on_quad (const typename Triangulation<dim>::quad_iterator &quad,
+ typename std::vector<Point<dim> > &points) const
+{
+ // check whether center of object is
+ // at x==0, since then it belongs
+ // to the plane part of the
+ // boundary
+ const Point<dim> quad_center = quad->center();
+ if (quad_center(0) == center(0))
+ return StraightBoundary<dim>::get_intermediate_points_on_quad (quad, points);
+ else
+ return HyperBallBoundary<dim>::get_intermediate_points_on_quad (quad, points);
+};
+
+
+
/* ---------------------------------------------------------------------- */