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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     r3d_m1d.cpp Type:Func
4    
5     Remmaillage des edge
6    
7     Date de creation : 12-8-1997 14 :36 :35
8     Derniere version : 12-8-1997 14 :36 :35
9    
10     Vincent FRANCOIS
11    
12     *****************************************************************/
13    
14    
15    
16    
17    
18     /**************************/
19     /* include */
20    
21    
22    
23     /**************************/
24     /* variables globales */
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     /* variables globales */
35     extern struct environnement env;
36     extern struct s_mesh *mesh;
37     extern struct s_maillage *maillage;
38     extern struct s_acis *acis;
39    
40     void r3d_m1d(void)
41     {
42     int i,j,k;
43     struct s_edge *edge;
44     struct s_noeud *no1,*no2,*no,*noo,*no1a,*no1b;
45     struct s_segment *seg,*segref,*segrech;
46     float indice,indic1,indic2;
47    
48     for (i=0;i<acis->nb_edge;i++)
49     {
50     edge=ADRESSE(i,edge,acis->);
51     if (edge->sense==0)
52     {
53     no1=edge->start_vertex->noeud;
54     no2=edge->end_vertex->noeud;
55     }
56     else
57     {
58     no2=edge->start_vertex->noeud;
59     no1=edge->end_vertex->noeud;
60     }
61     no1->pos=edge->t1;
62     no2->pos=edge->t1+edge->t2;
63     no=no1;
64     segref=NULL;
65     k=(-1);
66     if ((edge->nb_segment==0)&& (no1==no2)) r3d_dis(edge,no1,no2);
67     else do
68     {
69     k++;
70     segrech=NULL;
71     for (j=0;j<edge->nb_segment;j++)
72     {
73     seg=edge->segment[j];
74     if ((seg!=segref)&&((seg->n1==no->num)||(seg->n2==no->num)))
75     if (segrech!=NULL)
76     {
77     no1a=ADRESSE(seg->n1,noeud,mesh->);
78     no1b=ADRESSE(seg->n2,noeud,mesh->);
79     if (no1a->num==no->num) indic1=no1b->pos; else indic1=no1a->pos;
80     no1a=ADRESSE(segrech->n1,noeud,mesh->);
81     no1b=ADRESSE(segrech->n2,noeud,mesh->);
82     if (no1a->num==no->num) indic2=no1b->pos; else indic2=no1a->pos;
83     if (indic1<indic2) segrech=seg;
84     }
85     else segrech=seg;
86     }
87     if ((segrech!=NULL) && (k==0) && (no1==no2))
88     {
89     if (segrech->n1==no->num) noo=ADRESSE(segrech->n2,noeud,mesh->);
90     else noo=ADRESSE(segrech->n1,noeud,mesh->);
91     for (j=0;j<edge->nb_segment;j++)
92     {
93     seg=edge->segment[j];
94     no1a=ADRESSE(seg->n1,noeud,mesh->);
95     no1b=ADRESSE(seg->n2,noeud,mesh->);
96     if (no1a->pos<noo->pos) segrech=NULL;
97     if (no1b->pos<noo->pos) segrech=NULL;
98     }
99     }
100     if (segrech!=NULL)
101     {
102     if (segrech->n1==no->num) no=ADRESSE(segrech->n2,noeud,mesh->);
103     else no=ADRESSE(segrech->n1,noeud,mesh->);
104     segref=segrech;
105     }
106     else
107     {
108     indice=no2->pos;
109     noo=NULL;
110     for (j=0;j<edge->nb_segment;j++)
111     {
112     seg=edge->segment[j];
113     no1a=ADRESSE(seg->n1,noeud,mesh->);
114     no1b=ADRESSE(seg->n2,noeud,mesh->);
115     if ((no1a->pos>no->pos) && (no1a->pos<indice))
116     {
117     indice=no1a->pos;
118     noo=no1a;
119     }
120     if ((no1b->pos>no->pos) && (no1b->pos<indice))
121     {
122     indice=no1b->pos;
123     noo=no1b;
124     }
125     }
126     if (noo==NULL) noo=no2;
127     segref=r3d_dis(edge,no,noo);
128     no=noo;
129     }
130     }
131     while (no!=no2);
132     }
133    
134    
135    
136     }