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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     m2d.c Type:Func
4    
5     Maillage surfacique
6    
7     Date de creation : Tue Jan 14 14:50:33 1997
8    
9     Derniere version : Tue Jul 29 11:22:27 1997
10    
11    
12    
13    
14    
15     Vincent FRANCOIS
16    
17     *****************************************************************/
18    
19    
20    
21    
22    
23     /**************************/
24     /* include */
25     #include <stdio.h>
26     #include <string.h>
27     #include <stdlib.h>
28     #include "const.h"
29     #include "memoire.h"
30     #include "struct.h"
31     #include "prototype.h"
32    
33    
34     /**************************/
35     /* variables globales */
36     extern struct s_acis *acis;
37     extern struct environnement env;
38     extern struct s_mesh *mesh;
39     extern struct s_param *para;
40    
41    
42    
43     /**************************/
44     /* programme principal */
45    
46     void m2d(void)
47     {
48     struct s_face *face;
49     struct s_cone *cone;
50     struct s_plane *plane;
51     struct s_quadtree *quadtree;
52     int i,j,nb_tri;
53     char message[255];
54    
55     /* parametrisation d abord pour etude interference des surface */
56     aff_text(M2D_FACE);
57     for (j=0;j<acis->nb_face;j++)
58     {
59     face=ADRESSE(j,face,acis->);
60     /* phase 1 parametrisation des surface */
61     if (strcmp(acis->type_entite[face->surface],"cone-surface")==0)
62     {
63     cone=(struct s_cone *)acis->entity[face->surface];
64     m2d_param_cone(face,cone);
65     }
66     if (strcmp(acis->type_entite[face->surface],"plane-surface")==0)
67     {
68     plane=(struct s_plane *)acis->entity[face->surface];
69     m2d_param_plane(face,plane);
70     }
71     }
72     for (j=0;j<acis->nb_face;j++)
73     {
74     /* phase 2 constitution des frontieres */
75     face=ADRESSE(j,face,acis->);
76     if (face->sense==FORWARD) sprintf(message,M2D_FA_DI,j,face->num);
77     else sprintf(message,M2D_FA_IN,j,face->num);
78     nb_tri=mesh->nb_triangle;
79     aff_text(message);
80     aff_text(M2D_AC1);
81     NEW_ALLOC(frontiere,mesh->);
82     NEW_ALLOC(quadtree,mesh->);
83     NEW_ALLOC(front,mesh->);
84     m2d_frontiere(face);
85     /* phase 3 creation de la grille */
86     m2d_c_quad(face,face->rev_u,face->rev_v);
87     /* phase 4 initialisation du front */
88     m2d_ini_front(face);
89     /* phase 5 maillage */
90     mesh->tete_triangle=NULL;
91     m2d_gest_front(face);
92     /* phase 6 optimisation de maillage */
93     sprintf(message,M2D_AC2,env.opti);
94     aff_text(message);
95     o2d(face);
96     /* analyse de densite */
97     if (env.analyse==1)
98     {
99     aff_text(M2D_AC3);
100     m2d_ana_dens(face,nb_tri,mesh->nb_triangle);
101     }
102     /* fin */
103     mesh->nb_front=mesh->nb_front_tot;
104     LIBERE_LIEN(noeud,quadtree,mesh->);
105     LIBERE_LIEN(segment,quadtree,mesh->);
106     LIBERE_LIEN(triangle,quadtree,mesh->);
107     LIBERE_LIEN(frontiere,quadtree,mesh->);
108     LIBERE_LIEN(front,quadtree,mesh->);
109     LIBERE(quadtree,mesh->);
110     LIBERE(frontiere,mesh->);
111     LIBERE(front,mesh->);
112     mesh->tete_front=NULL;
113     mesh->vide_front=NULL;
114     mesh->nb_front_tot=0;
115     m2d_enreg();
116     }
117     /*m2d_resultat(1);*/
118     m2d_fin();
119     m2d_resultat(2);
120     }