Line data Source code
1 : /****************************************************************************/ 2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 3 : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others. 4 : // This program and the accompanying materials are made available under the 5 : // terms of the Eclipse Public License 2.0 which is available at 6 : // https://www.eclipse.org/legal/epl-2.0/ 7 : // This Source Code may also be made available under the following Secondary 8 : // Licenses when the conditions for such availability set forth in the Eclipse 9 : // Public License 2.0 are satisfied: GNU General Public License, version 2 10 : // or later which is available at 11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 13 : /****************************************************************************/ 14 : /// @file NIVissimBoundedClusterObject.cpp 15 : /// @author Daniel Krajzewicz 16 : /// @date Sept 2002 17 : /// 18 : // ------------------- 19 : /****************************************************************************/ 20 : #include <config.h> 21 : 22 : 23 : #include <cassert> 24 : #include <utils/geom/Boundary.h> 25 : #include "NIVissimBoundedClusterObject.h" 26 : 27 : NIVissimBoundedClusterObject::ContType NIVissimBoundedClusterObject::myDict; 28 : 29 1342 : NIVissimBoundedClusterObject::NIVissimBoundedClusterObject() 30 1342 : : myBoundary(nullptr), myClusterID(-1) { 31 1342 : myDict.insert(this); 32 1342 : } 33 : 34 : 35 1342 : NIVissimBoundedClusterObject::~NIVissimBoundedClusterObject() { 36 1342 : delete myBoundary; 37 1342 : } 38 : 39 : 40 : bool 41 25798 : NIVissimBoundedClusterObject::crosses(const AbstractPoly& poly, 42 : double offset) const { 43 : assert(myBoundary != 0 && myBoundary->xmax() >= myBoundary->xmin()); 44 25798 : return myBoundary->overlapsWith(poly, offset); 45 : } 46 : 47 : 48 : void 49 0 : NIVissimBoundedClusterObject::inCluster(int id) { 50 0 : myClusterID = id; 51 0 : } 52 : 53 : 54 : bool 55 0 : NIVissimBoundedClusterObject::clustered() const { 56 0 : return myClusterID > 0; 57 : } 58 : 59 : 60 : void 61 9 : NIVissimBoundedClusterObject::closeLoading() { 62 1351 : for (ContType::iterator i = myDict.begin(); i != myDict.end(); i++) { 63 1342 : (*i)->computeBounding(); 64 : } 65 9 : } 66 : 67 : 68 : const Boundary& 69 0 : NIVissimBoundedClusterObject::getBoundary() const { 70 0 : return *myBoundary; 71 : } 72 : 73 : 74 : /****************************************************************************/