#ifndef ABSGEOMETRYDISTORTION_HPP #define ABSGEOMETRYDISTORTION_HPP // // $Id: absGeometryDistortion.hpp,v 1.8 2001/01/30 21:22:05 hobbs Exp $ // // File: absGeometryDistortion.hpp // Purpose: Adjust a local point to account for distortions of the object. // This defines the interface needed to perform the distortion. // Created: 19-JAN-1998 John Hobbs // // $Revision: 1.8 $ // // // Includes class SpacePoint; #include "d0om/d0_Object.hpp" #include namespace dgs { /** Abstract geometrical distortion. Adjust a local point to account for distortions of the object. This defines the interface needed to perform the distortion. */ class absGeometryDistortion: public d0_Object { public: /// Default constructor absGeometryDistortion(); /// Destroy the complete type. virtual ~absGeometryDistortion() {} /// Make a copy of the complete type for use as a distortion virtual absGeometryDistortion* clone() const =0; /// Perform the distortion... virtual SpacePoint* distort(const SpacePoint& point_on_surface) const =0; /// Undo the distortion... virtual SpacePoint* undo(const SpacePoint& distored_point) const =0; /// Overloadable I/O virtual void printme(std::ostream& os) const =0; /// Stream insertion operator friend std::ostream& operator <<(std::ostream& os, const absGeometryDistortion& me) { me.printme(os); return os; } D0_OBJECT_SETUP(absGeometryDistortion); }; } #endif //ABSGEOMETRYDISTORTION_HPP