10#include "MantidGeometry/DllConfig.h"
19template <
class T>
class Matrix;
41 static const int Nprecision = 10;
44 std::unique_ptr<Surface>
clone()
const {
return std::unique_ptr<Surface>(doClone()); };
50 virtual std::string
className()
const {
return "Surface"; }
75 void writeHeader(std::ostream &)
const;
76 virtual void write(std::ostream &)
const;
77 virtual void print()
const;
79 virtual void getBoundingBox(
double &xmax,
double &ymax,
double &zmax,
double &xmin,
double &ymin,
double &zmin) = 0;
80#ifdef ENABLE_OPENCASCADE
81 virtual TopoDS_Shape createShape();
virtual void Accept(const Surface &)=0
Accept a surface.
Holds a basic quadratic surface.
virtual int setSurface(const std::string &R)=0
Sets the surface based on a string input in MCNPX format.
virtual double distance(const Kernel::V3D &) const =0
returns the minimum distance to the surface
virtual bool onSurface(const Kernel::V3D &R) const =0
is point valid on surface
Surface & operator=(const Surface &)=delete
virtual Surface * doClone() const =0
Abstract clone function.
virtual void rotate(const Kernel::Matrix< double > &)=0
rotates the surface
virtual std::string className() const
Effective typeid.
virtual void getBoundingBox(double &xmax, double &ymax, double &zmax, double &xmin, double &ymin, double &zmin)=0
bounding box for the surface
int Name
Surface number (MCNPX identifier)
virtual void acceptVisitor(BaseVisit &A) const
Accept visitor for line calculation.
virtual void displace(const Kernel::V3D &)=0
translates the surface
Surface(const Surface &)=default
virtual ~Surface()=default
int getName() const
Get Name.
void setName(int const N)
Set Name.
std::unique_ptr< Surface > clone() const
virtual Kernel::V3D surfaceNormal(const Kernel::V3D &) const =0
returns the normal to the closest point on the surface
Helper class which provides the Collimation Length for SANS instruments.