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

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