MeshKit  1.0
CAMALSurfEval.hpp
Go to the documentation of this file.
00001 #ifndef MESHKIT_CAMAL_GEOM_EVAL_HPP
00002 #define MESHKIT_CAMAL_GEOM_EVAL_HPP
00003 
00007 #include "CMLSurfEval.hpp"
00008 #include <vector>
00009 
00010 namespace MeshKit 
00011 {
00012 
00013 class ModelEnt;
00014     
00021 class CAMALSurfEval : public CMLSurfEval
00022 {
00023 public:
00027   CAMALSurfEval(ModelEnt *ment);
00028 
00031   virtual ~CAMALSurfEval();
00032 
00035   virtual double area();
00036 
00041   virtual void bounding_box(double box_min[3], double box_max[3]);
00042 
00048   virtual void move_to_surface(double& x, double& y, double& z);
00049 
00057   virtual void move_to_surface(double& x, double& y, double& z,
00058                                double& u_guess, double& v_guess);
00059 
00069   virtual bool normal_at(double x, double y, double z, 
00070                          double& nx, double& ny, double& nz);
00071 
00084   virtual bool normal_at(double x, double y, double z, 
00085                          double& u_guess, double& v_guess,
00086                          double& nx, double& ny, double& nz);
00087   
00091   virtual bool is_planar();
00092 
00096   virtual bool is_parametric();
00097 
00102   virtual bool is_periodic_in_u(double& u_period);
00103 
00108   virtual bool is_periodic_in_v(double& v_period);
00109 
00114   virtual void get_param_range_u(double& u_low, double& u_high);
00115 
00120   virtual void get_param_range_v(double& v_low, double& v_high);
00121   
00130   virtual bool uv_from_position(double x, double y, double z, 
00131                                 double& u, double& v);
00132 
00144   virtual bool uv_from_position(double x, double y, double z, 
00145                                 double& u, double& v,
00146                                 double& cx, double& cy, double& cz);
00147 
00155   virtual void position_from_uv(double u, double v, 
00156                                 double& x, double& y, double& z);
00157 
00164   virtual void distortion_at_uv(double u, double v, 
00165                                 double du[3], double dv[3]);
00166 
00172   virtual void correct_orientation(std::vector<int> & loop_sizes,
00173       std::vector<int> & loops, std::vector<double> & bdy_coords);
00174 
00175 private:
00176 
00178   ModelEnt *modelEnt;
00179 };
00180 
00181 } // namespace MeshKit
00182 
00183 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines