31 #include <atl\atlmod.h>
32 #include "smartvars.h"
45 initialisation(idface);
51 initialisation(idface);
56 swFace->IGetSurface(&swSurface);
72 SafeDoubleArray saparam(vparam);
84 SafeDoubleArray sda(vRetval);
101 SafeDoubleArray sda(vRetval);
119 SafeDoubleArray sda(vRetval);
138 SafeDoubleArray sda(vRetval);
152 SafeDoubleArray sda(vRetval);
161 double grayon=sda[6];
162 double prayon=sda[7];
169 vp0=
swFace->GetUVBounds();
171 swSurface->GetBSurfParams2(
false,
false,vp0,tolerance,&sense,&vRetval);
172 SafeDoubleArray sda(vRetval);
175 int uperiodic,vperiodic;
181 vector<double> knots_u;
182 vector<double> knots_v;
183 vector<double> poids;
184 vector<double> ptsctr;
185 for (
int i=0;i<uordre+numcpt;i++)
186 knots_u.insert(knots_u.end(),sda[4+i]);
187 for (
int i=0;i<vordre+numlpt;i++)
188 knots_v.insert(knots_v.end(),sda[4+uordre+numcpt+i]);
189 for (
int i=0;i<numcpt;i++)
190 for (
int j=0;j<numlpt;j++)
193 ptsctr.insert(ptsctr.end(),sda[4+uordre+numcpt+vordre+numlpt+dim*num]);
194 ptsctr.insert(ptsctr.end(),sda[4+uordre+numcpt+vordre+numlpt+dim*num+1]);
195 ptsctr.insert(ptsctr.end(),sda[4+uordre+numcpt+vordre+numlpt+dim*num+2]);
196 if (dim==4) poids.insert(poids.end(),sda[4+uordre+numcpt+vordre+numlpt+dim*num+3]);
197 else poids.insert(poids.end(),1.);
227 swSurface->Evaluate ( UParam, VParam, NumUDeriv, NumVDeriv, &vretval);
228 SafeDoubleArray saretval(vretval);
247 swSurface->Evaluate ( UParam, VParam, NumUDeriv, NumVDeriv, &vretval);
248 SafeDoubleArray saretval(vretval);
249 xyzdu[0]=saretval[3];
250 xyzdu[1]=saretval[4];
251 xyzdu[2]=saretval[5];
252 xyzdv[0]=saretval[6];
253 xyzdv[1]=saretval[7];
254 xyzdv[2]=saretval[8];
270 swSurface->Evaluate ( UParam, VParam, NumUDeriv, NumVDeriv, &vretval);
271 SafeDoubleArray saretval(vretval);
280 xyzdu[0]=saretval[3];
281 xyzdu[1]=saretval[4];
282 xyzdu[2]=saretval[5];
286 xyzdv[0]=saretval[9];
287 xyzdv[1]=saretval[10];
288 xyzdv[2]=saretval[11];
290 xyzduu[0]=saretval[6];
291 xyzduu[1]=saretval[7];
292 xyzduu[2]=saretval[8];
293 xyzduv[0]=saretval[12];
294 xyzduv[1]=saretval[13];
295 xyzduv[2]=saretval[14];
296 xyzdvv[0]=saretval[18];
297 xyzdvv[1]=saretval[19];
298 xyzdvv[2]=saretval[20];
309 swSurface->ReverseEvaluate(xyz[0], xyz[1], xyz[2], &vUV);
310 SafeDoubleArray saUV(vUV);
365 o <<
"%" <<
get_id() <<
"=SURFACE_SLD("<<
idoriginal.c_str() <<
");" << endl;
static void doubleto2int(double val, int &val1, int &val2)
double GetValeurTolerance()
BOOL GetParID(char *ID, CComPtr< IFace2 > &)
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
virtual double get_periode_v(void)
virtual int est_periodique_v(void)
virtual void initialisation()
virtual double get_umin()
virtual void evaluer(double *uv, double *xyz)
virtual double get_periode_u(void)
virtual void enregistrer(std::ostream &o, double version)
virtual double get_vmin()
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
virtual double get_umax()
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > ¶m)
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > ¶m)
virtual double get_vmax()
SLD_SURFACE(unsigned long num, std::string idface, class SLD_FONCTION &fonc)
virtual int est_periodique_u(void)
class ST_SURFACE * stsurface
CComPtr< ISurface > swSurface
virtual double get_periode_u(void)=0
virtual void evaluer(double *uv, double *xyz)=0
virtual void inverser(double *uv, double *xyz, double precision=1e-6)=0
virtual double get_vmin(void)=0
virtual double get_umin(void)=0
virtual double get_vmax(void)=0
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > ¶m)=0
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)=0
virtual int est_periodique_u(void)=0
virtual int est_periodique_v(void)=0
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)=0
virtual double get_periode_v(void)=0
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > ¶m)=0
virtual double get_umax(void)=0