MeshKit
1.0
|
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