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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     qc_ins.c Type:Func
4    
5     insertion des feuilles dans l'arbre
6    
7     Date de creation : Wed Feb 12 09:22:05 1997
8    
9     Derniere version : Wed May 7 14:17:04 1997
10    
11    
12    
13    
14    
15    
16    
17    
18    
19    
20    
21    
22     Vincent FRANCOIS
23    
24     *****************************************************************/
25    
26    
27    
28    
29    
30     /**************************/
31     /* include */
32     #include <stdio.h>
33     #include <stdlib.h>
34     #include <math.h>
35     #include "memoire.h"
36     #include "struct.h"
37     #include "const.h"
38     #include "prototype.h"
39    
40    
41     /**************************/
42     /* variables globales */
43     extern struct s_mesh *mesh;
44     extern struct environnement env;
45    
46    
47    
48     /**************************/
49     /* programme principal */
50    
51     struct s_quadtree *qu_ins(float u,float v,float tailleu,float taillev,struct s_noeud **tab_noeud,int nb_tab_noeud)
52     {
53     struct s_quadtree *quad;
54     int i;
55     struct s_noeud *no;
56     int num;
57    
58    
59     NEW_ENTITE(quad,quadtree,mesh->);
60     quad->num=mesh->nb_quadtree-1;
61     quad->u=u;
62     quad->v=v;
63     quad->t_u=tailleu;
64     quad->t_v=taillev;
65     for (i=0;i<nb_tab_noeud;i++)
66     {
67     no=tab_noeud[i];
68     if ((no->u>=u)&&(no->v>=v)&&(no->u<u+tailleu)&&(no->v<v+taillev))
69     {
70     NEW_POINTEUR(num,noeud,quad->);
71     quad->noeud[num]=no;
72     }
73    
74     }
75     if (quad->nb_noeud<2) quad->feuille=1;
76     else
77     {
78     quad->fils[0]=qu_ins(quad->u,quad->v,quad->t_u/2.,quad->t_v/2.,quad->noeud,quad->nb_noeud);
79     quad->fils[1]=qu_ins(quad->u+quad->t_u/2.,quad->v,quad->t_u/2.,quad->t_v/2.,quad->noeud,quad->nb_noeud);
80     quad->fils[2]=qu_ins(quad->u,quad->v+quad->t_v/2.,quad->t_u/2.,quad->t_v/2.,quad->noeud,quad->nb_noeud);
81     quad->fils[3]=qu_ins(quad->u+quad->t_u/2.,quad->v+quad->t_v/2.,quad->t_u/2.,quad->t_v/2.,quad->noeud,quad->nb_noeud);
82     }
83     return(quad);
84     }