ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/r3d_m2d.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 3590 byte(s)
Log Message:

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     r3d_m2d.cpp Type:Func
4    
5     Remaillage des faces
6    
7     Date de creation : 13-8-1997 17 :9 :9
8     Derniere version : 13-8-1997 17 :9 :9
9    
10     Vincent FRANCOIS
11    
12     *****************************************************************/
13    
14    
15    
16    
17    
18     /**************************/
19     /* include */
20     #include <stdio.h>
21     #include <string.h>
22     #include <stdlib.h>
23     #include "const.h"
24     #include "memoire.h"
25     #include "struct.h"
26     #include "prototype.h"
27    
28    
29     /**************************/
30     /* variables globales */
31     extern struct s_acis *acis;
32     extern struct environnement env;
33     extern struct s_mesh *mesh;
34     extern struct s_maillage *maillage;
35     extern struct s_param *para;
36    
37    
38    
39     /**************************/
40     /* programme principal */
41    
42     void r3d_m2d(struct s_octree **liste)
43     {
44     struct s_face *face;
45     struct s_cone *cone;
46     struct s_plane *plane;
47     struct s_quadtree *quadtree;
48     int j,nb_tri;
49     char message[255];
50     int i,nb_facette,*tab_facette;
51    
52    
53     for (j=0;j<acis->nb_face;j++)
54     {
55     voir();
56     face=ADRESSE(j,face,acis->);
57     /* phase 1 parametrisation des surface */
58     if (strcmp(acis->type_entite[face->surface],"cone-surface")==0)
59     {
60     cone=(struct s_cone *)acis->entity[face->surface];
61     m2d_param_cone(face,cone);
62     }
63     if (strcmp(acis->type_entite[face->surface],"plane-surface")==0)
64     {
65     plane=(struct s_plane *)acis->entity[face->surface];
66     m2d_param_plane(face,plane);
67     }
68     }
69    
70    
71    
72     for (j=0;j<acis->nb_face;j++)
73     {
74     voir();
75     face=ADRESSE(j,face,acis->);
76     sprintf(message,R3D_M2D_FACE,j,face->num);
77     aff_text(message);
78     nb_tri=mesh->nb_triangle;
79     cone=NULL;
80     plane=NULL;
81     /* phase 1 determination de la surface */
82     if (strcmp(acis->type_entite[face->surface],"cone-surface")==0)
83     cone=(struct s_cone *)acis->entity[face->surface];
84     if (strcmp(acis->type_entite[face->surface],"plane-surface")==0)
85     plane=(struct s_plane *)acis->entity[face->surface];
86     /* phase 2 constitution des frontieres */
87     NEW_ALLOC(frontiere,mesh->);
88     NEW_ALLOC(quadtree,mesh->);
89     NEW_ALLOC(front,mesh->);
90     m2d_frontiere(face);
91     /* phase 3 creation de la grille */
92     if (cone!=NULL) m2d_c_quad(face,2*PI,0.);
93     if (plane!=NULL) m2d_c_quad(face,0.,0.);
94     /* phase 4 initialisation du front */
95     m2d_ini_front(face);
96     mesh->tete_triangle=NULL;
97     /* phase 5 insertion des triangles recuperer */
98     nb_facette=0;
99     tab_facette=(int *)calloc(maillage->nb_mfacette,sizeof(int));
100     ERREUR_ALLOC(tab_facette);
101     r3d_rech_facette(face,&nb_facette,tab_facette);
102     r3d_ins_triangle(face,nb_facette,tab_facette,liste);
103     free(tab_facette);
104     /* phase 6 maillage */
105     m2d_gest_front(face);
106     /* phase 7 optimisation de maillage */
107     o2d(face);
108     /* analyse de densite */
109     if (env.analyse==1)
110     m2d_ana_dens(face,nb_tri,mesh->nb_triangle);
111     /* fin */
112     mesh->nb_front=mesh->nb_front_tot;
113     LIBERE_LIEN(noeud,quadtree,mesh->);
114     LIBERE_LIEN(segment,quadtree,mesh->);
115     LIBERE_LIEN(triangle,quadtree,mesh->);
116     LIBERE_LIEN(frontiere,quadtree,mesh->);
117     LIBERE_LIEN(front,quadtree,mesh->);
118     LIBERE(quadtree,mesh->);
119     LIBERE(frontiere,mesh->);
120     LIBERE(front,mesh->);
121     mesh->tete_front=NULL;
122     mesh->vide_front=NULL;
123     m2d_enreg();
124     mesh->nb_front_tot=0;
125     }
126     sprintf(message,R3D_M2D_RES,maillage->nb_mfacette,mesh->nb_facette_attache);
127     aff_text(message);
128     m2d_fin();
129     m2d_resultat(2);
130     for (i=mesh->nb_noeud_traite;i<mesh->nb_noeud;i++)
131     oc_ins_obj(NOEUD,i,mesh->first);
132     mesh->nb_noeud_traite=mesh->nb_noeud;
133     }