Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netbuild/NBCapacity2Lanes.h
169668 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 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 NBCapacity2Lanes.h
15
/// @author Daniel Krajzewicz
16
/// @author Sascha Krieg
17
/// @date Fri, 19 Jul 2002
18
///
19
// A helper class which computes the lane number from given capacity
20
/****************************************************************************/
21
#pragma once
22
#include <config.h>
23
24
25
// ===========================================================================
26
// class definitions
27
// ===========================================================================
28
/**
29
* @class NBCapacity2Lanes
30
* @brief A helper class which computes the lane number from given capacity
31
*
32
* A helper class for the computation of the number of lanes an edge has
33
* in dependence to this edge's capacity. The computation is done by the
34
* (trivial) assumption, the number of lanes increases linear with the
35
* number of lanes.
36
*/
37
class NBCapacity2Lanes {
38
public:
39
/** @brief Donstructor
40
*
41
* @param[in] divider Value for the norming divider
42
*/
43
NBCapacity2Lanes(double divider) : myDivider(divider) { }
44
45
46
/// @brief Destructor
47
~NBCapacity2Lanes() { }
48
49
50
/** @brief Returns the number of lanes computed from the given capacity
51
*
52
* Returns the estimated number of lanes by returning the given capacity
53
* divided by the norming divider given in the constructor.
54
*
55
* @param[in] capacity The capacity to convert
56
* @return The capacity converted to the number of lanes
57
*/
58
int get(double capacity) const {
59
capacity /= myDivider;
60
if (capacity > (int) capacity) {
61
capacity += 1;
62
}
63
// just assure that the number of lanes is not zero
64
if (capacity == 0) {
65
capacity = 1;
66
}
67
return (int) capacity;
68
}
69
70
private:
71
/// @brief The norming divider
72
double myDivider;
73
74
};
75
76