src/buildings/helper/building-position-allocator.cc
changeset 8768 e5607ee90a49
parent 8746 e1cbf693c71d
child 8984 85eed149a0ea
equal deleted inserted replaced
8767:76e71d929a3f 8768:e5607ee90a49
   126   if (m_roomListWithoutReplacement.empty ())
   126   if (m_roomListWithoutReplacement.empty ())
   127     {
   127     {
   128       for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
   128       for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
   129         {
   129         {
   130           NS_LOG_LOGIC ("building " << (*bit)->GetId ());
   130           NS_LOG_LOGIC ("building " << (*bit)->GetId ());
   131           for (uint32_t rx = 0; rx < (*bit)->GetNRoomsX (); ++rx)
   131           for (uint32_t rx = 1; rx <= (*bit)->GetNRoomsX (); ++rx)
   132             {
   132             {
   133               for (uint32_t ry = 0; ry < (*bit)->GetNRoomsY (); ++ry)
   133               for (uint32_t ry = 1; ry <= (*bit)->GetNRoomsY (); ++ry)
   134                 {
   134                 {
   135                   for (uint32_t f = 0; f < (*bit)->GetNFloors (); ++f)
   135                   for (uint32_t f = 1; f <= (*bit)->GetNFloors (); ++f)
   136                     {
   136                     {
   137                       RoomInfo i;
   137                       RoomInfo i;
   138                       i.roomx = rx;
   138                       i.roomx = rx;
   139                       i.roomy = ry;
   139                       i.roomy = ry;
   140                       i.floor = f; 
   140                       i.floor = f; 
   147         }
   147         }
   148     }
   148     }
   149   uint32_t n = rand.GetInteger (0,m_roomListWithoutReplacement.size () - 1);
   149   uint32_t n = rand.GetInteger (0,m_roomListWithoutReplacement.size () - 1);
   150   RoomInfo r = m_roomListWithoutReplacement.at (n);      
   150   RoomInfo r = m_roomListWithoutReplacement.at (n);      
   151   m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);  
   151   m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);  
   152   NS_LOG_LOGIC ("considering room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")");
   152   NS_LOG_LOGIC ("considering building " << r.b->GetId () << " room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")");
   153 
   153 
   154   Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> ();
   154   Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> ();
   155   UniformVariable v;
   155   UniformVariable v;
   156   BoxValue bv;
   156   BoxValue bv;
   157   r.b->GetAttribute ("Boundaries", bv);
   157   r.b->GetAttribute ("Boundaries", bv);
   158   Box box = bv.Get ();
   158   Box box = bv.Get ();
   159   double rdx =  (box.xMax - box.xMin) / r.b->GetNRoomsX ();
   159   double rdx =  (box.xMax - box.xMin) / r.b->GetNRoomsX ();
   160   double rdy =  (box.yMax - box.yMin) / r.b->GetNRoomsY ();
   160   double rdy =  (box.yMax - box.yMin) / r.b->GetNRoomsY ();
   161   double rdz =  (box.zMax - box.zMin) / r.b->GetNFloors ();
   161   double rdz =  (box.zMax - box.zMin) / r.b->GetNFloors ();
   162   double x1 = box.xMin + rdx * r.roomx;
   162   double x1 = box.xMin + rdx * (r.roomx - 1);
   163   double x2 = box.xMin + rdx * (r.roomx + 1);
   163   double x2 = box.xMin + rdx * r.roomx;
   164   double y1 = box.yMin + rdy * r.roomy;
   164   double y1 = box.yMin + rdy * (r.roomy -1);
   165   double y2 = box.yMin + rdy * (r.roomy + 1);
   165   double y2 = box.yMin + rdy * r.roomy;
   166   double z1 = box.zMin + rdz * r.floor;
   166   double z1 = box.zMin + rdz * (r.floor - 1);
   167   double z2 = box.zMin + rdz * (r.floor + 1);
   167   double z2 = box.zMin + rdz * r.floor;
   168   NS_LOG_LOGIC ("randomly allocating position in "
   168   NS_LOG_LOGIC ("randomly allocating position in "
   169                 << " (" << x1 << "," << x2 << ") "
   169                 << " (" << x1 << "," << x2 << ") "
   170                 << "x (" << y1 << "," << y2 << ") "
   170                 << "x (" << y1 << "," << y2 << ") "
   171                 << "x (" << z1 << "," << z2 << ") ");
   171                 << "x (" << z1 << "," << z2 << ") ");
   172 
   172 
   245   b->GetAttribute ("Boundaries", bv);
   245   b->GetAttribute ("Boundaries", bv);
   246   Box box = bv.Get ();
   246   Box box = bv.Get ();
   247   double rdx =  (box.xMax - box.xMin) / b->GetNRoomsX ();
   247   double rdx =  (box.xMax - box.xMin) / b->GetNRoomsX ();
   248   double rdy =  (box.yMax - box.yMin) / b->GetNRoomsY ();
   248   double rdy =  (box.yMax - box.yMin) / b->GetNRoomsY ();
   249   double rdz =  (box.zMax - box.zMin) / b->GetNFloors ();
   249   double rdz =  (box.zMax - box.zMin) / b->GetNFloors ();
   250   double x1 = box.xMin + rdx * roomx;
   250   double x1 = box.xMin + rdx * (roomx - 1);
   251   double x2 = box.xMin + rdx * (roomx + 1);
   251   double x2 = box.xMin + rdx * roomx;
   252   double y1 = box.yMin + rdy * roomy;
   252   double y1 = box.yMin + rdy * (roomy -1);
   253   double y2 = box.yMin + rdy * (roomy + 1);
   253   double y2 = box.yMin + rdy * roomy;
   254   double z1 = box.zMin + rdz * floor;
   254   double z1 = box.zMin + rdz * (floor - 1);
   255   double z2 = box.zMin + rdz * (floor + 1);
   255   double z2 = box.zMin + rdz * floor;
   256   NS_LOG_LOGIC ("randomly allocating position in "
   256   NS_LOG_LOGIC ("randomly allocating position in "
   257                 << " (" << x1 << "," << x2 << ") "
   257                 << " (" << x1 << "," << x2 << ") "
   258                 << "x (" << y1 << "," << y2 << ") "
   258                 << "x (" << y1 << "," << y2 << ") "
   259                 << "x (" << z1 << "," << z2 << ") ");
   259                 << "x (" << z1 << "," << z2 << ") ");
   260 
   260