scenario_simulator_v2 C++ API
common
math
geometry
include
geometry
vector3
truncate.hpp
Go to the documentation of this file.
1
// Copyright 2015 TIER IV, Inc. All rights reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef GEOMETRY__VECTOR3__TRUNCATE_HPP_
16
#define GEOMETRY__VECTOR3__TRUNCATE_HPP_
17
18
#include <
geometry/vector3/is_like_vector3.hpp
>
19
20
namespace
math
21
{
22
namespace
geometry
23
{
24
template
<
25
typename
T,
typename
U,
26
std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, std::is_scalar<U>>, std::nullptr_t> =
27
nullptr
>
28
auto
truncate
(
const
T & v,
const
U & max)
29
{
30
if
(
auto
x =
norm
(v); max < x) {
31
return
v * (max / x);
32
}
else
{
33
return
v;
34
}
35
}
36
}
// namespace geometry
37
}
// namespace math
38
39
#endif
// GEOMETRY__VECTOR3__TRUNCATE_HPP_
is_like_vector3.hpp
math::geometry::norm
auto norm(const T &v)
Definition:
norm.hpp:25
math::geometry::truncate
auto truncate(const T &v, const U &max)
Definition:
truncate.hpp:28
math
Definition:
bounding_box.hpp:32
Generated by
1.9.1