Lagrange
utils.h
1/*
2 * Copyright 2020 Adobe. All rights reserved.
3 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may obtain a copy
5 * of the License at http://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software distributed under
8 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9 * OF ANY KIND, either express or implied. See the License for the specific language
10 * governing permissions and limitations under the License.
11 */
12#pragma once
13
14#include <cmath> // for std::exp
15
21
22namespace lagrange {
23
26template <typename Scalar>
27Scalar to_degrees(Scalar rad = 1)
28{
29 return Scalar(180) * rad / Scalar(M_PI);
30}
31
34template <typename Scalar>
35Scalar to_radians(Scalar deg = 1)
36{
37 return Scalar(M_PI) * deg / Scalar(180);
38}
39
42template <typename T>
43int sign(T val)
44{
45 return (T(0) < val) - (val < T(0));
46}
47
49template <typename Scalar>
50Scalar gaussian(Scalar x, Scalar sigma, Scalar center = 0)
51{
52 Scalar x2 = (x - center) * (x - center);
53 Scalar exponent = x2 / (2 * sigma * sigma);
54 return std::exp(-exponent);
55}
56
57} // namespace lagrange
Main namespace for Lagrange.
Definition: AABBIGL.h:30
Scalar to_radians(Scalar deg=1)
Convert degrees to radians.
Definition: utils.h:35
Scalar to_degrees(Scalar rad=1)
Convert radians to degrees.
Definition: utils.h:27
int sign(T val)
Get the sign of the value Returns either -1, 0, or 1.
Definition: utils.h:43
Scalar gaussian(Scalar x, Scalar sigma, Scalar center=0)
Simple evaluation of Gaussian function.
Definition: utils.h:50