ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mtu/src/pir_surface.cpp
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months, 1 week ago) by francois
File size: 3342 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
2     //####//------------------------------------------------------------
3     //####// MAGiC
4     //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5     //####// Departement de Genie Mecanique - UQTR
6     //####//------------------------------------------------------------
7     //####// MAGIC est un projet de recherche de l equipe ERICCA
8     //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9     //####// http://www.uqtr.ca/ericca
10     //####// http://www.uqtr.ca/
11     //####//------------------------------------------------------------
12     //####//------------------------------------------------------------
13     //####//
14     //####// pir_surface.cpp
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:55 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 francois 283
23    
24     #include "gestionversion.h"
25    
26     #ifdef BREP_PIRATE
27    
28     #include "pir_surface.h"
29    
30    
31    
32    
33    
34     PIR_SURFACE::PIR_SURFACE(unsigned long num,PG_SURFACE *srf):MG_SURFACE(num),surface(srf)
35     {
36     pos=new PG_POSITION2D(*surface);
37     u_min=pos->get_umin();
38     u_max=pos->get_umax();
39     v_min=pos->get_vmin();
40     v_max=pos->get_vmax();
41     }
42    
43     PIR_SURFACE::PIR_SURFACE(PG_SURFACE *srf):MG_SURFACE(),surface(srf)
44     {
45     pos=new PG_POSITION2D(*surface);
46     u_min=pos->get_umin();
47     u_max=pos->get_umax();
48     v_min=pos->get_vmin();
49     v_max=pos->get_vmax();
50     }
51    
52     PIR_SURFACE::PIR_SURFACE(PIR_SURFACE& mdd):MG_SURFACE(mdd),surface(mdd.surface)
53     {
54     pos=new PG_POSITION2D(*surface);
55     u_min=pos->get_umin();
56     u_max=pos->get_umax();
57     v_min=pos->get_vmin();
58     v_max=pos->get_vmax();
59     }
60    
61    
62    
63     PIR_SURFACE::~PIR_SURFACE()
64     {
65     delete pos;
66     }
67    
68     void PIR_SURFACE::evaluer(double *uv,double *xyz)
69     {
70     surface->evaluer(uv,xyz);
71     }
72    
73     void PIR_SURFACE::deriver(double *uv,double *xyzdu, double *xyzdv)
74     {
75     double *ds[2] = {xyzdu,xyzdv};
76     surface->deriver(uv,ds);
77     }
78    
79     void PIR_SURFACE::deriver_seconde(double *uv,double* xyzduu,double* xyzduv,double* xyzdvv,double *xyz, double *xyzdu, double *xyzdv)
80     {
81     double pt[3]= { 0.0 , 0.0 , 0.0 };
82     double du[3] = { 0.0, 0.0, 0.0 };
83     double dv[3] = { 0.0, 0.0, 0.0 };
84     if (xyz==NULL) xyz=pt;
85     if (xyzdu==NULL) xyzdu=du;
86     if (xyzdv==NULL) xyzdv=dv;
87     double* d0n[]={ xyz, xyzdv, xyzdvv };
88     double* d1n[]={ xyzdu, xyzduv };
89     double* d2n[]={ xyzduu };
90     double** ds[] = { d0n, d1n, d2n };
91     pos->deriver_seconde( uv, ds );
92    
93     }
94    
95     void PIR_SURFACE::inverser(double* uv,double *xyz,double precision)
96     {
97     pos->localiser(xyz,uv,precision);
98     }
99    
100     int PIR_SURFACE::est_periodique_u(void)
101     {
102     return surface->estFermee_en_u();
103     }
104    
105     int PIR_SURFACE::est_periodique_v(void)
106     {
107     return surface->estFermee_en_v();
108     }
109    
110     double PIR_SURFACE::get_periode_u(void)
111     {
112     if (surface->estFermee_en_u()==0) return 0.;
113     return surface->get_periode_u();
114     }
115    
116     double PIR_SURFACE::get_periode_v(void)
117     {
118     if (surface->estFermee_en_v()==0) return 0.;
119     return surface->get_periode_v();
120     }
121    
122    
123 francois 763 void PIR_SURFACE::enregistrer(ostream& o,double version)
124 francois 283 {
125     o << "%" << get_id() << "=SURFACE_PIRATE("<< surface->get_id()<< ");" << endl;
126     }
127     #endif
128    
129