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

File Contents

# Content
1 /*****************************************************************
2
3 r3d_gene_triangle.c Type:Func
4
5 Generation des mailles 2D
6
7 Date de creation : Fri Aug 1 10:30:39 1997
8
9 Derniere version : Tue Aug 5 14:29:57 1997
10
11
12
13 Vincent FRANCOIS
14
15 *****************************************************************/
16
17
18
19
20
21 /**************************/
22 /* include */
23 #include <stdio.h>
24 #include <string.h>
25 #include <stdlib.h>
26 #include "const.h"
27 #include "memoire.h"
28 #include "struct.h"
29 #include "prototype.h"
30
31 /**************************/
32 /* variables globales */
33 extern struct environnement env;
34 extern struct s_mesh *mesh;
35 extern struct s_maillage *maillage;
36 extern struct s_acis *acis;
37
38
39
40 /**************************/
41 /* programme principal */
42
43 void r3d_gene_triangle(void)
44 {
45 int i,num,j,k,l;
46 int nb_place;
47 struct s_mnoeud *mno1,*mno2,*mno3,*mno;
48 struct s_mtriangle *mtri,*mtri2;
49 struct s_mfacette *mfa,*mfacette;
50
51 mfacette=(struct s_mfacette *)calloc(acis->nb_entity,sizeof(struct s_mfacette));
52 ERREUR_ALLOC(mfacette);
53 for (i=0;i<maillage->nb_mtriangle;i++)
54 {
55 mtri=ADRESSE(i,mtriangle,maillage->);
56 mno1=ADRESSE(mtri->n1,mnoeud,maillage->);
57 mno2=ADRESSE(mtri->n2,mnoeud,maillage->);
58 mno3=ADRESSE(mtri->n3,mnoeud,maillage->);
59 if ((mno1->etat==GARDE)&&(mno2->etat==GARDE)&&(mno3->etat==GARDE))
60 {
61 NEW_POINTEUR(num,mtriangle,(mfacette+mtri->num_ent)->);
62 (mfacette+mtri->num_ent)->mtriangle[num]=mtri;
63 mtri->mfacette=mfacette+mtri->num_ent;
64 }
65 }
66 /* separation des facettes */
67 for (i=0;i<acis->nb_entity;i++)
68 if ((mfacette+i)->nb_mtriangle!=0)
69 {
70 nb_place=0;
71 while (nb_place!=(mfacette+i)->nb_mtriangle)
72 {
73 j=0;
74 while ((mfacette+i)->mtriangle[j]->mfacette!=(mfacette+i)) j++;
75 mtri=(mfacette+i)->mtriangle[j];
76 NEW_ENTITE(mfa,mfacette,maillage->);
77 mfa->num=maillage->nb_mfacette-1;
78 NEW_POINTEUR(num,mtriangle,mfa->);
79 mfa->mtriangle[num]=mtri;
80 mtri->mfacette=mfa;
81 nb_place++;
82 for (k=0;k<mfa->nb_mtriangle;k++)
83 {
84 mtri=mfa->mtriangle[k];
85 mno=ADRESSE(mtri->n1,mnoeud,maillage->);
86 for (l=0;l<mno->nb_mtriangle;l++)
87 {
88 mtri2=mno->mtriangle[l];
89 if (mtri2->mfacette==(mfacette+i))
90 {
91 NEW_POINTEUR(num,mtriangle,mfa->);
92 mfa->mtriangle[num]=mtri2;
93 mtri2->mfacette=mfa;
94 nb_place++;
95 }
96 }
97 mno=ADRESSE(mtri->n2,mnoeud,maillage->);
98 for (l=0;l<mno->nb_mtriangle;l++)
99 {
100 mtri2=mno->mtriangle[l];
101 if (mtri2->mfacette==(mfacette+i))
102 {
103 NEW_POINTEUR(num,mtriangle,mfa->);
104 mfa->mtriangle[num]=mtri2;
105 mtri2->mfacette=mfa;
106 nb_place++;
107 }
108 }
109 mno=ADRESSE(mtri->n3,mnoeud,maillage->);
110 for (l=0;l<mno->nb_mtriangle;l++)
111 {
112 mtri2=mno->mtriangle[l];
113 if (mtri2->mfacette==(mfacette+i))
114 {
115 NEW_POINTEUR(num,mtriangle,mfa->);
116 mfa->mtriangle[num]=mtri2;
117 mtri2->mfacette=mfa;
118 nb_place++;
119 }
120 }
121
122 }
123 }
124 }
125 free(mfacette);
126 }