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

# Content
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 }