Lagrange
Loading...
Searching...
No Matches
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 <lagrange/internal/constants.h>
15#include <cmath> // for std::exp
16
22
23namespace lagrange {
24
27template <typename Scalar>
29{
30 return Scalar(180) * rad / Scalar(lagrange::internal::pi);
31}
32
35template <typename Scalar>
37{
38 return Scalar(lagrange::internal::pi) * deg / Scalar(180);
39}
40
43template <typename T>
44int sign(T val)
45{
46 return (T(0) < val) - (val < T(0));
47}
48
50template <typename Scalar>
51Scalar gaussian(Scalar x, Scalar sigma, Scalar center = 0)
52{
53 Scalar x2 = (x - center) * (x - center);
54 Scalar exponent = x2 / (2 * sigma * sigma);
55 return std::exp(-exponent);
56}
57
58} // namespace lagrange
@ Scalar
Mesh attribute must have exactly 1 channel.
Definition AttributeFwd.h:56
Main namespace for Lagrange.
Scalar to_radians(Scalar deg=1)
Convert degrees to radians.
Definition utils.h:36
Scalar to_degrees(Scalar rad=1)
Convert radians to degrees.
Definition utils.h:28
int sign(T val)
Get the sign of the value Returns either -1, 0, or 1.
Definition utils.h:44
Scalar gaussian(Scalar x, Scalar sigma, Scalar center=0)
Simple evaluation of Gaussian function.
Definition utils.h:51