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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     m3d_ini_front.cpp Type:Func
4    
5     Initialisation d'un front 3D
6    
7     Date de creation : 10-3-1998 15 :34 :13
8     Derniere version : 10-3-1998 15 :34 :13
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     /* variables globales */
30     extern struct s_acis *acis;
31     extern struct environnement env;
32     extern struct s_mesh *mesh;
33     extern struct s_param *para;
34    
35    
36     /**************************/
37     /* programme principal */
38    
39     void m3d_ini_front(void)
40     {
41     struct s_frontiere3d *fr;
42     struct s_front3d *ft;
43     struct s_noeud *no1,*no2,*no3;
44     int i,j,k;
45     float angle;
46    
47     for (i=0;i<mesh->nb_frontiere3d;i++)
48     {
49     fr=ADRESSE(i,frontiere3d,mesh->);
50     m3d_ac_front(&ft,NEW);
51     ft->n1=fr->no1->num;
52     ft->n2=fr->no2->num;
53     ft->n3=fr->no3->num;
54     ft->tri=fr->tri;
55     ft->tri->front=ft->tri->front+1;
56     ft->tri->ft=ft;
57     m3d_ord_front(ft,NONFORCE);
58     oc_ins_obj(FRONT3D,ft->num,mesh->first);
59     }
60     for (i=0;i<mesh->nb_front3d;i++ )
61     {
62     ft=ADRESSE(i,front3d,mesh->);
63     no1=ADRESSE(ft->n1,noeud,mesh->);
64     no2=ADRESSE(ft->n2,noeud,mesh->);
65     no3=ADRESSE(ft->n3,noeud,mesh->);
66     for (j=0;j<no1->nb_triangle;j++)
67     for (k=0;k<no2->nb_triangle;k++)
68     if ((no1->triangle[j]==no2->triangle[k])&&(no1->triangle[j]!=ft->tri))
69     if (ft->voisin[0].ft==NULL)
70     {
71     ft->voisin[0].ft=no1->triangle[j]->ft;
72     ft->voisin[0].angle=m3d_angle_front(ft,ft->voisin[0].ft);
73     }
74     else
75     {
76     angle=m3d_angle_front(ft,no1->triangle[j]->ft);
77     if (angle<ft->voisin[0].angle)
78     {
79     ft->voisin[0].ft=no1->triangle[j]->ft;
80     ft->voisin[0].angle=angle;
81     }
82     }
83     for (j=0;j<no1->nb_triangle;j++)
84     for (k=0;k<no3->nb_triangle;k++)
85     if ((no1->triangle[j]==no3->triangle[k])&&(no1->triangle[j]!=ft->tri))
86     if (ft->voisin[1].ft==NULL)
87     {
88     ft->voisin[1].ft=no1->triangle[j]->ft;
89     ft->voisin[1].angle=m3d_angle_front(ft,ft->voisin[1].ft);
90     }
91     else
92     {
93     angle=m3d_angle_front(ft,no1->triangle[j]->ft);
94     if (angle<ft->voisin[1].angle)
95     {
96     ft->voisin[1].ft=no1->triangle[j]->ft;
97     ft->voisin[1].angle=angle;
98     }
99     }
100     for (j=0;j<no2->nb_triangle;j++)
101     for (k=0;k<no3->nb_triangle;k++)
102     if ((no2->triangle[j]==no3->triangle[k])&&(no2->triangle[j]!=ft->tri))
103     if (ft->voisin[2].ft==NULL)
104     {
105     ft->voisin[2].ft=no2->triangle[j]->ft;
106     ft->voisin[2].angle=m3d_angle_front(ft,ft->voisin[2].ft);
107     }
108     else
109     {
110     angle=m3d_angle_front(ft,no2->triangle[j]->ft);
111     if (angle<ft->voisin[2].angle)
112     {
113     ft->voisin[2].ft=no2->triangle[j]->ft;
114     ft->voisin[2].angle=angle;
115     }
116     }
117     }
118    
119     }