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

File Contents

# Content
1 /*****************************************************************
2
3 oc_place_boite.c Type:Func
4
5 Insertion d une boite dans l arbre
6
7 Date de creation : Wed Jun 25 17:46:36 1997
8
9 Derniere version : Wed Jul 16 11:10:31 1997
10
11
12
13
14 Vincent FRANCOIS
15
16 *****************************************************************/
17
18
19
20
21
22 /**************************/
23 /* include */
24 #include <stdio.h>
25 #include <string.h>
26 #include <stdlib.h>
27 #include "const.h"
28 #include "memoire.h"
29 #include "struct.h"
30 #include "prototype.h"
31
32 /**************************/
33 /* variables globales */
34 extern struct s_acis *acis;
35 extern struct environnement env;
36 extern struct s_mesh *mesh;
37 extern struct s_param *para;
38
39
40
41 /**************************/
42 /* programme principal */
43
44 void oc_place_boite(int type,void *entite,float bxmin,float bymin,float bzmin,float bxmax,float bymax,float bzmax,struct s_octree *octree)
45 {
46 float xx,yy,zz;
47 int num;
48
49
50 xx=octree->x;
51 yy=octree->y;
52 zz=octree->z;
53 if (bxmax>=xx)
54 if (bymax>=yy)
55 if (bzmax>=zz)
56 if (bxmin<xx+octree->taille)
57 if (bymin<yy+octree->taille)
58 if (bzmin<zz+octree->taille)
59 if (octree->feuille==1)
60 {
61 if (type==POINT)
62 {
63 NEW_POINTEUR(num,vertex,octree->);
64 octree->vertex[num]=(struct s_vertex *)entite;
65 }
66 if (type==STRAIGHT)
67 {
68 NEW_POINTEUR(num,edge,octree->);
69 octree->edge[num]=(struct s_edge *)entite;
70 }
71 if (type==ELLIPSE)
72 {
73 NEW_POINTEUR(num,edge,octree->);
74 octree->edge[num]=(struct s_edge *)entite;
75 }
76 if (type==PLANE)
77 {
78 NEW_POINTEUR(num,face,octree->);
79 octree->face[num]=(struct s_face *)entite;
80 }
81 if (type==CONE)
82 {
83 NEW_POINTEUR(num,face,octree->);
84 octree->face[num]=(struct s_face *)entite;
85 }
86 if (type==NOEUD)
87 {
88 NEW_POINTEUR(num,noeud,octree->);
89 octree->noeud[num]=(struct s_noeud *)entite;
90 }
91 if (type==TRIANGLE)
92 {
93 NEW_POINTEUR(num,triangle,octree->);
94 octree->triangle[num]=(struct s_triangle *)entite;
95 }
96 if (type==TETRA)
97 {
98 NEW_POINTEUR(num,tetra,octree->);
99 octree->tetra[num]=(struct s_tetra *)entite;
100 }
101 if (type==MNOEUD)
102 {
103 NEW_POINTEUR(num,mnoeud,octree->);
104 octree->mnoeud[num]=(struct s_mnoeud *)entite;
105 }
106 if (type==MSEGMENT)
107 {
108 NEW_POINTEUR(num,msegment,octree->);
109 octree->msegment[num]=(struct s_msegment *)entite;
110 }
111 if (type==MTRIANGLE)
112 {
113 NEW_POINTEUR(num,mtriangle,octree->);
114 octree->mtriangle[num]=(struct s_mtriangle *)entite;
115 }
116 if (type==MTETRA)
117 {
118 NEW_POINTEUR(num,mtetra,octree->);
119 octree->mtetra[num]=(struct s_mtetra *)entite;
120 }
121 if (type==FRONTIERE3D)
122 {
123 NEW_POINTEUR(num,frontiere3d,octree->);
124 octree->frontiere3d[num]=(struct s_frontiere3d *)entite;
125 }
126 if (type==FRONT3D)
127 {
128 NEW_POINTEUR(num,front3d,octree->);
129 octree->front3d[num]=(struct s_front3d *)entite;
130 }
131
132 }
133 else
134 {
135 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[0]);
136 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[1]);
137 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[2]);
138 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[3]);
139 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[4]);
140 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[5]);
141 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[6]);
142 oc_place_boite(type,entite,bxmin,bymin,bzmin,bxmax,bymax,bzmax,octree->fils[7]);
143 }
144 }