00001 /* 00002 File: Transformation.h 00003 00004 Copyright(C) C. Kotterink, Computed Graphics 00005 */ 00006 #ifndef TRANSFORMATION_H 00007 #define TRANSFORMATION_H 00008 00009 #include<ImplicitShape.h> 00010 00011 #include<Vertex3.h> 00012 #include<real.h> 00013 00016 class Transformation : public ImplicitShape 00017 { 00018 DYNAMIC_OBJECT; 00019 public: 00020 Transformation(): operand(0), lipschitz(1) { 00021 M.identity(); 00022 } 00023 ~Transformation(); 00024 00025 void transform(Matrix4 &m); 00026 00027 // Inherited from ImplicitShape 00028 real distance(const Vertex3 &v); 00029 00030 // Inherited from Shape 00031 Color4 calculateShade( 00032 const SurfaceInfo &s, Vertex3 &transformed, Scene &scene); 00033 00034 // Inherited from DynamicObject 00035 void parseSymbol(Token &t, ObjectFile &file); 00036 void writeParams(ostream &stream); 00037 00038 protected: 00039 ImplicitShape *operand; 00040 Matrix4 M; 00041 real lipschitz; 00042 00043 private: 00044 typedef ImplicitShape super; 00045 }; 00046 #endif