9#include "MantidGeometry/DllConfig.h"
11#include <boost/optional.hpp>
22class PseudoRandomNumberGenerator;
32class vtkGeometryCacheReader;
33class vtkGeometryCacheWriter;
64 virtual void getBoundingBox(
double &xmax,
double &ymax,
double &zmax,
double &xmin,
double &ymin,
65 double &zmin)
const = 0;
71 const size_t)
const = 0;
73 const BoundingBox &activeRegion,
const size_t)
const = 0;
80 virtual void draw()
const = 0;
85 virtual const std::string &
id()
const = 0;
86 virtual void setID(
const std::string &
id) = 0;
A simple structure that defines an axis-aligned cuboid shaped bounding box for a geometrical object.
IObject : Interface for geometry objects.
virtual bool isOnSide(const Kernel::V3D &) const =0
virtual int getPointInObject(Kernel::V3D &point) const =0
virtual void GetObjectGeom(detail::ShapeInfo::GeometryShape &type, std::vector< Kernel::V3D > &vectors, double &innerRadius, double &radius, double &height) const =0
virtual void initDraw() const =0
virtual int interceptSurface(Geometry::Track &) const =0
virtual std::shared_ptr< GeometryHandler > getGeometryHandler() const =0
virtual double distance(const Geometry::Track &) const =0
virtual const detail::ShapeInfo & shapeInfo() const =0
virtual double solidAngle(const Kernel::V3D &observer, const Kernel::V3D &scaleFactor) const =0
virtual boost::optional< Kernel::V3D > generatePointInObject(Kernel::PseudoRandomNumberGenerator &rng, const BoundingBox &activeRegion, const size_t) const =0
virtual boost::optional< Kernel::V3D > generatePointInObject(Kernel::PseudoRandomNumberGenerator &rng, const size_t) const =0
virtual IObject * cloneWithMaterial(const Kernel::Material &material) const =0
virtual void getBoundingBox(double &xmax, double &ymax, double &zmax, double &xmin, double &ymin, double &zmin) const =0
Calculate (or return cached value of) Axis Aligned Bounding box (DEPRECATED)
virtual void setID(const std::string &id)=0
virtual void setMaterial(const Kernel::Material &material)=0
virtual detail::ShapeInfo::GeometryShape shape() const =0
virtual double solidAngle(const Kernel::V3D &observer) const =0
virtual const std::string & id() const =0
virtual ~IObject()=default
virtual void setFiniteGeometryFlag(bool)
virtual bool isValid(const Kernel::V3D &) const =0
virtual double volume() const =0
virtual int getName() const =0
virtual const BoundingBox & getBoundingBox() const =0
Return cached value of axis-aligned bounding box.
virtual const Kernel::Material & material() const =0
virtual bool isFiniteGeometry() const
virtual IObject * clone() const =0
virtual void draw() const =0
virtual bool hasValidShape() const =0
Defines a track as a start point and a direction.
A material is defined as being composed of a given element, defined as a PhysicalConstants::NeutronAt...
Defines a 1D pseudo-random number generator, i.e.
std::unique_ptr< const IObject > IObject_const_uptr
Typdef for a unique pointer to a const object.
std::unique_ptr< IObject > IObject_uptr
Typdef for a unique pointer.
std::shared_ptr< const IObject > IObject_const_sptr
Typdef for a shared pointer to a const object.
std::shared_ptr< IObject > IObject_sptr
Typdef for a shared pointer.
Helper class which provides the Collimation Length for SANS instruments.