| 258 | } |
| 259 | |
| 260 | BoundingBox Space_Impl::boundingBox() const { |
| 261 | BoundingBox result; |
| 262 | |
| 263 | for (Surface& surface : this->surfaces()) { |
| 264 | result.addPoints(surface.vertices()); |
| 265 | } |
| 266 | |
| 267 | for (ShadingSurfaceGroup& shadingSurfaceGroup : this->shadingSurfaceGroups()) { |
| 268 | result.addPoints(shadingSurfaceGroup.transformation() * shadingSurfaceGroup.boundingBox().corners()); |
| 269 | } |
| 270 | |
| 271 | for (InteriorPartitionSurfaceGroup& interiorPartitionSurfaceGroup : this->interiorPartitionSurfaceGroups()) { |
| 272 | result.addPoints(interiorPartitionSurfaceGroup.transformation() * interiorPartitionSurfaceGroup.boundingBox().corners()); |
| 273 | } |
| 274 | |
| 275 | for (Luminaire& luminaire : this->luminaires()) { |
| 276 | result.addPoint(luminaire.position()); |
| 277 | } |
| 278 | |
| 279 | for (DaylightingControl& daylightingControl : this->daylightingControls()) { |
| 280 | result.addPoint(daylightingControl.position()); |
| 281 | } |
| 282 | |
| 283 | for (IlluminanceMap& illuminanceMap : this->illuminanceMaps()) { |
| 284 | result.addPoints(illuminanceMap.transformation() * illuminanceMap.corners()); |
| 285 | } |
| 286 | |
| 287 | for (GlareSensor& glareSensor : this->glareSensors()) { |
| 288 | result.addPoint(glareSensor.position()); |
| 289 | } |
| 290 | |
| 291 | return result; |
| 292 | } |
| 293 | |
| 294 | double Space_Impl::directionofRelativeNorth() const { |
| 295 | boost::optional<double> value = getDouble(OS_SpaceFields::DirectionofRelativeNorth, true); |