lipm_walking_controller
1.6.0
clamp.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018-2019, CNRS-UM LIRMM
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
*
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
* POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#pragma once
29
30
#include <mc_rtc/logging.h>
31
35
namespace
utils
36
{
37
47
inline
double
clamp
(
double
v,
double
vMin,
double
vMax)
48
{
49
if
(v > vMax)
50
{
51
return
vMax;
52
}
53
else
if
(v < vMin)
54
{
55
return
vMin;
56
}
57
else
58
{
59
return
v;
60
}
61
}
62
72
inline
void
clampInPlace
(
double
& v,
double
vMin,
double
vMax)
73
{
74
if
(v > vMax)
75
{
76
v = vMax;
77
}
78
else
if
(v < vMin)
79
{
80
v = vMin;
81
}
82
}
83
95
inline
double
clamp
(
double
v,
double
vMin,
double
vMax,
const
char
* label)
96
{
97
if
(v > vMax)
98
{
99
mc_rtc::log::warning(
"{} clamped to {}"
, label, vMax);
100
return
vMax;
101
}
102
else
if
(v < vMin)
103
{
104
mc_rtc::log::warning(
"{} clamped to {}"
, label, vMin);
105
return
vMin;
106
}
107
else
108
{
109
return
v;
110
}
111
}
112
124
inline
void
clampInPlace
(
double
& v,
double
vMin,
double
vMax,
const
char
* label)
125
{
126
if
(v > vMax)
127
{
128
mc_rtc::log::warning(
"{} clamped to {}"
, label, vMax);
129
v = vMax;
130
}
131
else
if
(v < vMin)
132
{
133
mc_rtc::log::warning(
"{} clamped to {}"
, label, vMin);
134
v = vMin;
135
}
136
}
137
138
}
// namespace utils
139
140
using
utils::clamp
;
141
using
utils::clampInPlace
;
utils::clampInPlace
void clampInPlace(double &v, double vMin, double vMax)
Clamp a value in a given interval.
Definition:
clamp.h:72
utils::clamp
double clamp(double v, double vMin, double vMax)
Clamp a value in a given interval.
Definition:
clamp.h:47
utils
Utility functions and classes.
Definition:
clamp.h:35
include
lipm_walking
utils
clamp.h
Generated on Tue Mar 19 2024 15:56:24 for lipm_walking_controller by
1.8.17