00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * David Wong 00008 * Side Effects 00009 * 477 Richmond Street West 00010 * Toronto, Ontario 00011 * Canada M5V 3E7 00012 * 416-504-9876 00013 * 00014 * NAME: TS_Ellipsoid (C++) 00015 * 00016 * COMMENTS: 00017 * 00018 */ 00019 00020 #ifndef _TS_Ellipsoid_h_ 00021 #define _TS_Ellipsoid_h_ 00022 00023 #include "TS_API.h" 00024 #include "TS_Primitive.h" 00025 00026 class TS_API TS_MetaEllipsoid: public TS_MetaPrimitive { 00027 public: 00028 TS_MetaEllipsoid(); 00029 TS_MetaEllipsoid(const TS_MetaEllipsoid *); 00030 00031 float density(const UT_Vector3 &p) const; 00032 UT_Interval density(const UT_BoundingBox &p) const; 00033 float grad(const UT_Vector3 &point, UT_Vector3 &grad) const; 00034 int setRay(const TS_Ray &ray); 00035 float rayDensity(float t) const; 00036 UT_Interval rayDensity(const UT_Interval &t) const; 00037 void transform(const UT_Matrix4 &); 00038 00039 // Get the matrix of this ellipsoid's quadric. 00040 void getQuadricMatrix4(UT_Matrix4 &m) const; 00041 00042 TS_MetaExpression *duplicate() const; 00043 void init(); 00044 void reset(); 00045 private: 00046 #ifdef LINUX 00047 public: 00048 ~TS_MetaEllipsoid(); 00049 private: 00050 #else 00051 ~TS_MetaEllipsoid(); 00052 #endif 00053 TS_Quadric q; 00054 fpreal64 myT2, myT1, myT0; // computed data for ray tracing 00055 }; 00056 00057 #endif
1.5.9