Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SocialAgents3D
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thomas Pitiot
SocialAgents3D
Commits
70a6de52
Commit
70a6de52
authored
Nov 08, 2012
by
pitiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
maj avec subdiv mais pas simplif
parent
e2acbb61
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
236 additions
and
226 deletions
+236
-226
include/env_map.h
include/env_map.h
+3
-1
src/env_map.cpp
src/env_map.cpp
+206
-203
src/moving_obstacle.cpp
src/moving_obstacle.cpp
+4
-4
src/simulator.cpp
src/simulator.cpp
+7
-2
src/viewer.cpp
src/viewer.cpp
+16
-16
No files found.
include/env_map.h
View file @
70a6de52
...
...
@@ -37,10 +37,12 @@ struct PFP : public PFP_STANDARD
// definition des listes d'agent
typedef
std
::
vector
<
Agent
*>
AGENTS
;
typedef
std
::
vector
<
Obstacle
*>
OBSTACLES
;
typedef
std
::
vector
<
MovingObstacle
*>
MOVINGOBSTACLES
;
typedef
NoMathIONameAttribute
<
AGENTS
>
AGENTVECT
;
typedef
NoMathIONameAttribute
<
OBSTACLES
>
OBSTACLEVECT
;
typedef
NoMathIONameAttribute
<
MOVINGOBSTACLES
>
MOVINGOBSTACLEVECT
;
typedef
VertexAttribute
<
PFP
::
VEC3
>
TVEC3
;
...
...
@@ -194,7 +196,7 @@ void update_registration(Obstacle * o);
void
register_pop
(
Obstacle
*
o
,
int
n
);
void
resetObstInFace
(
Obstacle
*
o
);
void
resetObstPartInFace
(
Obstacle
*
o
,
Dart
d
);
void
resetPart
(
MovingObstacle
*
mo
,
Dart
d
);
void
resetPart
(
MovingObstacle
*
mo
,
int
index
,
Dart
d
);
void
displayMO
(
Obstacle
*
o
);
/**************************************
...
...
src/env_map.cpp
View file @
70a6de52
...
...
@@ -514,8 +514,7 @@ void EnvMap::updateMap()
popAgentInCells
(
*
ait
,
old
)
;
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
oldObst
.
begin
();
ait
!=
oldObst
.
end
();
++
ait
)
register_pop
(
*
ait
,
(
*
ait
)
->
index
)
;
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
oldNeighborObst
.
begin
();
ait
!=
oldNeighborObst
.
end
();
++
ait
)
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
oldNeighborObst
.
begin
();
ait
!=
oldNeighborObst
.
end
();
++
ait
)
register_pop
(
*
ait
,
(
*
ait
)
->
index
)
;
neighborAgentvect
[
old
].
clear
()
;
...
...
@@ -613,209 +612,213 @@ void EnvMap::updateMap()
// On recrée une liste des faces à simplifier en empêchant les doublons
// On en profite pour vérifier les conditions de simplifications
std
::
vector
<
Dart
>
checkCoarsenCandidate
;
checkCoarsenCandidate
.
reserve
(
coarsenCandidate
.
size
())
;
for
(
unsigned
int
it
=
0
;
it
<
coarsenCandidate
.
size
();
++
it
)
{
Dart
old
=
coarsenCandidate
[
it
]
;
bool
oldIsMarked
=
coarsenMark
.
isMarked
(
old
)
;
coarsenMark
.
unmark
(
old
)
;
unsigned
int
fLevel
=
map
.
faceLevel
(
old
)
;
if
(
oldIsMarked
&&
fLevel
>
0
&&
map
.
getDartLevel
(
old
)
<
fLevel
)
{
unsigned
int
cur
=
map
.
getCurrentLevel
()
;
map
.
setCurrentLevel
(
fLevel
-
1
)
;
if
(
map
.
faceIsSubdividedOnce
(
old
))
{
// on compte le nombre d'agents dans les sous-faces
// on en profite pour compter le degré de la face grossière
unsigned
int
degree
=
0
;
unsigned
int
nbAgents
=
0
;
Dart
fit
=
old
;
do
{
nbAgents
+=
agentvect
[
fit
].
size
()
;
++
degree
;
coarsenMark
.
unmark
(
fit
)
;
// TODO Optimisation déjà faite
// unsigned int start = it + 1;
// unsigned int fEmb = map.getEmbedding<FACE>(fit) ;
// while(start < coarsenCandidate.size())
// std::vector<Dart> checkCoarsenCandidate ;
// checkCoarsenCandidate.reserve(coarsenCandidate.size()) ;
//
// for (unsigned int it = 0; it < coarsenCandidate.size(); ++it)
// {
// Dart old = coarsenCandidate[it] ;
// bool oldIsMarked = coarsenMark.isMarked(old) ;
// coarsenMark.unmark(old) ;
//
// unsigned int fLevel = map.faceLevel(old) ;
//
// if (oldIsMarked && fLevel > 0 && map.getDartLevel(old) < fLevel)
// {
// unsigned int cur = map.getCurrentLevel() ;
// map.setCurrentLevel(fLevel - 1) ;
//
// if (map.faceIsSubdividedOnce(old))
// {
// // on compte le nombre d'agents dans les sous-faces
// // on en profite pour compter le degré de la face grossière
// unsigned int degree = 0 ;
// unsigned int nbAgents = 0 ;
// Dart fit = old ;
// do
// {
// nbAgents += agentvect[fit].size() ;
// ++degree ;
// coarsenMark.unmark(fit) ;
//// TODO Optimisation déjà faite
//// unsigned int start = it + 1;
//// unsigned int fEmb = map.getEmbedding<FACE>(fit) ;
//// while(start < coarsenCandidate.size())
//// {
//// if(map.getEmbedding<FACE>(coarsenCandidate[start]) == fEmb)
//// {
//// coarsenCandidate[start] = coarsenCandidate.back() ;
//// coarsenCandidate.pop_back() ;
//// }
//// else
//// ++start ;
//// }
//
// fit = map.phi1(fit) ;
// } while (fit != old) ;
//
//
// //Loop subdivision
// if (degree == 3)
// {
// map.setCurrentLevel(fLevel) ;
// Dart centerFace = map.phi2(map.phi1(old)) ;
// nbAgents += agentvect[centerFace].size() ;
// coarsenMark.unmark(centerFace) ;
//// TODO Optimisation déjà faite
//// unsigned int start = it + 1;
//// unsigned int fEmb = map.getEmbedding<FACE>(centerFace) ;
//// while(start < coarsenCandidate.size())
//// {
//// if(map.getEmbedding<FACE>(coarsenCandidate[start]) == fEmb)
//// {
//// coarsenCandidate[start] = coarsenCandidate.back() ;
//// coarsenCandidate.pop_back() ;
//// }
//// else
//// ++start ;
//// }
// map.setCurrentLevel(fLevel - 1) ;
// }
// if (nbAgents < nbAgentsToSimplify) checkCoarsenCandidate.push_back(old) ;
// }
// map.setCurrentLevel(cur) ;
// }
// }
// coarsenCandidate.clear() ;
//
// // On réalise la simplification (les conditions ont déjà été vérifiées)
// for (unsigned int it = 0; it < checkCoarsenCandidate.size(); ++it)
// {
// Dart old = checkCoarsenCandidate[it] ;
//
// unsigned int fLevel = map.faceLevel(old) ;
// unsigned int cur = map.getCurrentLevel() ;
// map.setCurrentLevel(fLevel - 1) ;
//
// // on compte le degré de la face grossière
// unsigned int degree = 0 ;
// Dart fit = old ;
// do
// {
// ++degree ;
// fit = map.phi1(fit) ;
// } while (fit != old) ;
//
// PFP::AGENTS agents ;
// PFP::OBSTACLEVECT obst ;
// PFP::OBSTACLEVECT neighborObst ;
//
// fit = old ;
// do
// {
// PFP::AGENTS a(agentvect[fit]) ;
// PFP::OBSTACLEVECT ob(obstvect[fit]) ;
// PFP::OBSTACLEVECT nob(neighborObstvect[fit]) ;
//
// agents.insert(agents.end(), a.begin(), a.end()) ;
// obst.insert(obst.end(), ob.begin(), ob.end()) ;
// neighborObst.insert(neighborObst.end(), nob.begin(), nob.end()) ;
// map.setCurrentLevel(map.getMaxLevel()) ;
// for (PFP::AGENTS::iterator ait = a.begin(); ait != a.end(); ++ait)
// popAgentInCells(*ait, fit) ;
// map.setCurrentLevel(fLevel - 1) ;
// Dart nf = map.phi2(fit) ;
// if (!map.faceIsSubdivided(nf))
// {
// map.setCurrentLevel(fLevel) ;
// PFP::AGENTS& an = agentvect[nf] ;
// PFP::OBSTACLEVECT resetob = obstvect[nf] ;
// for (PFP::AGENTS::iterator ait = an.begin(); ait != an.end(); ++ait)
// {
// if ((*ait)->part_.d == map.phi1(nf)) (*ait)->part_.d = nf ;
// }
// for (PFP::OBSTACLEVECT::iterator ait = resetob.begin(); ait != resetob.end(); ++ait)
// {
// MovingObstacle* mo = (*ait)->mo ;
// if (mo != NULL)
// {
// if(map.getEmbedding<FACE>(coarsenCandidate[start]) == fEmb)
// {
// coarsenCandidate[start] = coarsenCandidate.back() ;
// coarsenCandidate.pop_back() ;
// }
// else
// ++start ;
// resetPart(mo,(*ait)->index, nf) ;
// }
fit
=
map
.
phi1
(
fit
)
;
}
while
(
fit
!=
old
)
;
//Loop subdivision
if
(
degree
==
3
)
{
map
.
setCurrentLevel
(
fLevel
)
;
Dart
centerFace
=
map
.
phi2
(
map
.
phi1
(
old
))
;
nbAgents
+=
agentvect
[
centerFace
].
size
()
;
coarsenMark
.
unmark
(
centerFace
)
;
// TODO Optimisation déjà faite
// unsigned int start = it + 1;
// unsigned int fEmb = map.getEmbedding<FACE>(centerFace) ;
// while(start < coarsenCandidate.size())
// {
// if(map.getEmbedding<FACE>(coarsenCandidate[start]) == fEmb)
// {
// coarsenCandidate[start] = coarsenCandidate.back() ;
// coarsenCandidate.pop_back() ;
// }
// else
// ++start ;
// }
map
.
setCurrentLevel
(
fLevel
-
1
)
;
}
if
(
nbAgents
<
nbAgentsToSimplify
)
checkCoarsenCandidate
.
push_back
(
old
)
;
}
map
.
setCurrentLevel
(
cur
)
;
}
}
coarsenCandidate
.
clear
()
;
// On réalise la simplification (les conditions ont déjà été vérifiées)
for
(
unsigned
int
it
=
0
;
it
<
checkCoarsenCandidate
.
size
();
++
it
)
{
Dart
old
=
checkCoarsenCandidate
[
it
]
;
unsigned
int
fLevel
=
map
.
faceLevel
(
old
)
;
unsigned
int
cur
=
map
.
getCurrentLevel
()
;
map
.
setCurrentLevel
(
fLevel
-
1
)
;
// on compte le degré de la face grossière
unsigned
int
degree
=
0
;
Dart
fit
=
old
;
do
{
++
degree
;
fit
=
map
.
phi1
(
fit
)
;
}
while
(
fit
!=
old
)
;
PFP
::
AGENTS
agents
;
PFP
::
OBSTACLEVECT
obst
;
PFP
::
OBSTACLEVECT
neighborObst
;
fit
=
old
;
do
{
PFP
::
AGENTS
a
(
agentvect
[
fit
])
;
PFP
::
OBSTACLEVECT
ob
(
obstvect
[
fit
])
;
PFP
::
OBSTACLEVECT
nob
(
neighborObstvect
[
fit
])
;
agents
.
insert
(
agents
.
end
(),
a
.
begin
(),
a
.
end
())
;
obst
.
insert
(
obst
.
end
(),
ob
.
begin
(),
ob
.
end
())
;
neighborObst
.
insert
(
neighborObst
.
end
(),
nob
.
begin
(),
nob
.
end
())
;
map
.
setCurrentLevel
(
map
.
getMaxLevel
())
;
for
(
PFP
::
AGENTS
::
iterator
ait
=
a
.
begin
();
ait
!=
a
.
end
();
++
ait
)
popAgentInCells
(
*
ait
,
fit
)
;
map
.
setCurrentLevel
(
fLevel
-
1
)
;
Dart
nf
=
map
.
phi2
(
fit
)
;
if
(
!
map
.
faceIsSubdivided
(
nf
))
{
map
.
setCurrentLevel
(
fLevel
)
;
PFP
::
AGENTS
&
an
=
agentvect
[
nf
]
;
PFP
::
OBSTACLEVECT
resetob
=
obstvect
[
nf
]
;
for
(
PFP
::
AGENTS
::
iterator
ait
=
an
.
begin
();
ait
!=
an
.
end
();
++
ait
)
{
if
((
*
ait
)
->
part_
.
d
==
map
.
phi1
(
nf
))
(
*
ait
)
->
part_
.
d
=
nf
;
}
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
resetob
.
begin
();
ait
!=
resetob
.
end
();
++
ait
)
{
MovingObstacle
*
mo
=
(
*
ait
)
->
mo
;
if
(
mo
!=
NULL
)
{
resetPart
(
mo
,
nf
)
;
}
}
map
.
setCurrentLevel
(
fLevel
-
1
)
;
}
fit
=
map
.
phi1
(
fit
)
;
}
while
(
fit
!=
old
)
;
if
(
degree
==
3
)
{
map
.
setCurrentLevel
(
fLevel
)
;
Dart
centerFace
=
map
.
phi2
(
map
.
phi1
(
old
))
;
PFP
::
AGENTS
a
(
agentvect
[
centerFace
])
;
PFP
::
OBSTACLEVECT
ob
(
obstvect
[
centerFace
])
;
PFP
::
OBSTACLEVECT
nob
(
neighborObstvect
[
centerFace
])
;
agents
.
insert
(
agents
.
end
(),
a
.
begin
(),
a
.
end
())
;
obst
.
insert
(
obst
.
end
(),
ob
.
begin
(),
ob
.
end
())
;
neighborObst
.
insert
(
neighborObst
.
end
(),
nob
.
begin
(),
nob
.
end
())
;
map
.
setCurrentLevel
(
map
.
getMaxLevel
())
;
for
(
PFP
::
AGENTS
::
iterator
ait
=
a
.
begin
();
ait
!=
a
.
end
();
++
ait
)
popAgentInCells
(
*
ait
,
centerFace
)
;
map
.
setCurrentLevel
(
fLevel
-
1
)
;
}
neighborAgentvect
[
old
].
clear
()
;
// TODO Check with optimisation
map
.
setCurrentLevel
(
map
.
getMaxLevel
())
;
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
obst
.
begin
();
ait
!=
obst
.
end
();
++
ait
)
register_pop
(
*
ait
,
(
*
ait
)
->
index
)
;
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
neighborObst
.
begin
();
ait
!=
neighborObst
.
end
();
++
ait
)
register_pop
(
*
ait
,
(
*
ait
)
->
index
)
;
map
.
setCurrentLevel
(
fLevel
-
1
)
;
Algo
::
IHM
::
coarsenFace
<
PFP
>
(
map
,
old
,
position
)
;
std
::
pair
<
bool
,
bool
>&
sf
=
subdivisableFace
[
old
]
;
sf
.
first
=
true
;
sf
.
second
=
true
;
map
.
setCurrentLevel
(
map
.
getMaxLevel
())
;
for
(
PFP
::
AGENTS
::
iterator
itA
=
agents
.
begin
();
itA
!=
agents
.
end
();
++
itA
)
{
(
*
itA
)
->
part_
.
d
=
old
;
pushAgentInCells
(
*
itA
,
old
)
;
}
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
obst
.
begin
();
ait
!=
obst
.
end
();
++
ait
)
{
resetObstPartInFace
(
*
ait
,
old
)
;
update_registration
(
*
ait
)
;
}
for
(
PFP
::
OBSTACLEVECT
::
iterator
ait
=
neighborObst
.
begin
();
ait
!=
neighborObst
.
end
();
++
ait
)
{
update_registration
(
*
ait
)
;
}
Dart
dd
=
old
;
do
{
Dart
ddd
=
map
.
alpha1
(
map
.
alpha1
(
dd
))
;
while
(
ddd
!=
dd
)
{
neighborAgentvect
[
old
].
insert
(
neighborAgentvect
[
old
].
end
(),
agentvect
[
ddd
].
begin
(),
agentvect
[
ddd
].
end
())
;
ddd
=
map
.
alpha1
(
ddd
)
;
}
dd
=
map
.
phi1
(
dd
)
;
}
while
(
dd
!=
old
)
;
if
(
fLevel
>
1
&&
!
coarsenMark
.
isMarked
(
old
)
&&
agentvect
[
old
].
size
()
<
nbAgentsToSimplify
)
{
coarsenMark
.
mark
(
old
)
;
coarsenCandidate
.
push_back
(
map
.
faceOldestDart
(
old
))
;
}
map
.
setCurrentLevel
(
cur
)
;
}
map
.
setCurrentLevel
(
map
.
getMaxLevel
())
;
if
(
coarsenCandidate
.
size
()
>
0
)
updateMap
()
;
// }
// map.setCurrentLevel(fLevel - 1) ;
// }
// fit = map.phi1(fit) ;
// } while (fit != old) ;
//
// if (degree == 3)
// {
// map.setCurrentLevel(fLevel) ;
// Dart centerFace = map.phi2(map.phi1(old)) ;
// PFP::AGENTS a(agentvect[centerFace]) ;
// PFP::OBSTACLEVECT ob(obstvect[centerFace]) ;
// PFP::OBSTACLEVECT nob(neighborObstvect[centerFace]) ;
// agents.insert(agents.end(), a.begin(), a.end()) ;
// obst.insert(obst.end(), ob.begin(), ob.end()) ;
// neighborObst.insert(neighborObst.end(), nob.begin(), nob.end()) ;
// map.setCurrentLevel(map.getMaxLevel()) ;
// for (PFP::AGENTS::iterator ait = a.begin(); ait != a.end(); ++ait)
// popAgentInCells(*ait, centerFace) ;
// map.setCurrentLevel(fLevel - 1) ;
// }
// for (PFP::OBSTACLEVECT::iterator ait = obst.begin(); ait != obst.end(); ++ait)
// {
// removeElementFromVector<Obstacle*>(neighborObst, (*ait)) ;
// }
// neighborAgentvect[old].clear() ;
// // TODO Check with optimisation
// map.setCurrentLevel(map.getMaxLevel()) ;
// for (PFP::OBSTACLEVECT::iterator ait = obst.begin(); ait != obst.end(); ++ait)
// register_pop(*ait, (*ait)->index) ;
// for (PFP::OBSTACLEVECT::iterator ait = neighborObst.begin(); ait != neighborObst.end(); ++ait)
// register_pop(*ait, (*ait)->index) ;
// map.setCurrentLevel(fLevel - 1) ;
//
// Algo::IHM::coarsenFace<PFP>(map, old, position) ;
//
// std::pair<bool, bool>& sf = subdivisableFace[old] ;
// sf.first = true ;
// sf.second = true ;
//
// map.setCurrentLevel(map.getMaxLevel()) ;
//
// for (PFP::AGENTS::iterator itA = agents.begin(); itA != agents.end(); ++itA)
// {
// (*itA)->part_.d = old ;
// pushAgentInCells(*itA, old) ;
// }
// for (PFP::OBSTACLEVECT::iterator ait = obst.begin(); ait != obst.end(); ++ait)
// {
// resetObstPartInFace(*ait, old) ;
// update_registration(*ait) ;
// }
// for (PFP::OBSTACLEVECT::iterator ait = neighborObst.begin(); ait != neighborObst.end(); ++ait)
// {
// update_registration(*ait) ;
// }
//
// Dart dd = old ;
// do
// {
// Dart ddd = map.alpha1(map.alpha1(dd)) ;
// while (ddd != dd)
// {
// neighborAgentvect[old].insert(neighborAgentvect[old].end(), agentvect[ddd].begin(), agentvect[ddd].end()) ;
// ddd = map.alpha1(ddd) ;
// }
// dd = map.phi1(dd) ;
// } while (dd != old) ;
//
// if (fLevel > 1 && !coarsenMark.isMarked(old) && agentvect[old].size() < nbAgentsToSimplify)
// {
// coarsenMark.mark(old) ;
// coarsenCandidate.push_back(map.faceOldestDart(old)) ;
// }
//
// map.setCurrentLevel(cur) ;
// }
// map.setCurrentLevel(map.getMaxLevel()) ;
// if (coarsenCandidate.size() > 0) updateMap() ;
}
void
EnvMap
::
resetAgentInFace
(
Agent
*
agent
)
...
...
src/moving_obstacle.cpp
View file @
70a6de52
...
...
@@ -418,7 +418,7 @@ void MovingObstacle::register_update(Obstacle* o, Dart d, int n)
std
::
list
<
Dart
>
memo
;
bool
modif
=
false
;
//
bool modif=false;
// if(p1->crossCell != CGoGN::Algo::MovingObjects::NO_CROSS
// || p2->crossCell != CGoGN::Algo::MovingObjects::NO_CROSS)
...
...
@@ -501,13 +501,13 @@ void resetObstPartInFace(Obstacle* o, Dart d1)
}
}
void
resetPart
(
MovingObstacle
*
mo
,
Dart
d1
)
void
resetPart
(
MovingObstacle
*
mo
,
int
index
,
Dart
d1
)
{
for
(
unsigned
int
i
=
0
;
i
<
mo
->
nbVertices
;
i
++
)
{
int
i
=
index
;
if
(
mo
->
parts_
[
i
]
->
d
==
mo
->
sim_
->
envMap_
.
map
.
phi1
(
d1
))
mo
->
parts_
[
i
]
->
d
=
d1
;
}
}
void
displayMO
(
Obstacle
*
o
)
...
...
src/simulator.cpp
View file @
70a6de52
...
...
@@ -88,9 +88,14 @@ void Simulator::doStep()
for
(
unsigned
int
i
=
0
;
i
<
movingObstacles_
.
size
()
;
++
i
)
{
movingObstacles_
[
i
]
->
computePrefVelocity
()
;
#ifndef SPATIAL_HASHING
envMap_
.
map
.
setCurrentLevel
(
envMap_
.
map
.
getMaxLevel
())
;
#endif
movingObstacles_
[
i
]
->
update
()
;
}
#ifndef SPATIAL_HASHING
envMap_
.
map
.
setCurrentLevel
(
0
)
;
#endif
for
(
unsigned
int
i
=
0
;
i
<
agents_
.
size
()
;
++
i
)
{
agents_
[
i
]
->
updateObstacleNeighbors
()
;
...
...
@@ -148,7 +153,7 @@ void Simulator::doStep()
nbRefineCandidate
+=
envMap_
.
refineCandidate
.
size
()
;
nbCoarsenCandidate
+=
envMap_
.
coarsenCandidate
.
size
()
;
//
envMap_.updateMap() ;
envMap_
.
updateMap
()
;
#endif
globalTime_
+=
timeStep_
;
...
...
src/viewer.cpp
View file @
70a6de52
...
...
@@ -277,22 +277,22 @@ void SocialAgents::cb_redraw()
}
// affiche les cases de la map qui ont des obstacles
//
glColor3f(1.0f, 0.5f, 0.5f);
//
glLineWidth(5.0f);
//
int nb =0;
//
for(Dart d = sim.envMap_.map.begin(); d != sim.envMap_.map.end(); sim.envMap_.map.next(d))
//
{
//
for(std::vector<Obstacle*>::const_iterator it =sim.envMap_.obstvect[d].begin();it!=sim.envMap_.obstvect[d].end();++it)
//
{
//
if((*it)->mo!=NULL){
//
//
renderDart(sim.envMap_, d);
//
//
CGoGNout << "Dart "<< d.index << " coloriée" << CGoGNendl;
//
nb ++;
//
break;
//
}
//
}
//
}
glColor3f
(
1.0
f
,
0.5
f
,
0.5
f
);
glLineWidth
(
5.0
f
);
int
nb
=
0
;
for
(
Dart
d
=
sim
.
envMap_
.
map
.
begin
();
d
!=
sim
.
envMap_
.
map
.
end
();
sim
.
envMap_
.
map
.
next
(
d
))
{
for
(
std
::
vector
<
Obstacle
*>::
const_iterator
it
=
sim
.
envMap_
.
obstvect
[
d
].
begin
();
it
!=
sim
.
envMap_
.
obstvect
[
d
].
end
();
++
it
)
{
if
((
*
it
)
->
mo
!=
NULL
){
renderDart
(
sim
.
envMap_
,
d
);
// CGoGNout << "Dart "<< d.index << " coloriée" << CGoGNendl;
nb
++
;
break
;
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment