Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
Bresenham.cpp
Go to the documentation of this file.
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/****************************************************************************/
19// A class to realise a uniform n:m - relationship using the
20/****************************************************************************/
21#include <config.h>
22
23#include <iostream>
25#include "Bresenham.h"
26
27
28// ===========================================================================
29// method definitions
30// ===========================================================================
31void
32Bresenham::compute(BresenhamCallBack* callBack, const int val1, const int val2) {
33 const int smaller = MIN2(val1, val2);
34 const int greater = MAX2(val1, val2);
35 int pos = 0;
36 int c = smaller;
37 for (int i = 0; i < greater; i++) {
38 if (smaller == val1) {
39 callBack->execute(pos, i);
40 } else {
41 callBack->execute(i, pos);
42 }
43 c += 2 * smaller;
44 if (c >= 2 * greater) {
45 pos++;
46 c -= 2 * greater;
47 }
48 }
49}
50
51
52/****************************************************************************/
T MIN2(T a, T b)
Definition StdDefs.h:76
T MAX2(T a, T b)
Definition StdDefs.h:82
virtual void execute(const int val1, const int val2)=0
static void compute(BresenhamCallBack *callBack, const int val1, const int val2)
Definition Bresenham.cpp:32