Thunderbots Project
Loading...
Searching...
No Matches
math_functions.h
1#pragma once
2
3#include <algorithm>
4
5#include "software/geom/circle.h"
6#include "software/geom/point.h"
7#include "software/geom/rectangle.h"
8
16double linear(double value, double offset, double linear_width);
17
33double rectangleSigmoid(const Rectangle& rect, const Point& point,
34 const double& sig_width);
35
49double circleSigmoid(const Circle& circle, const Point& point, const double& sig_width);
50
68double sigmoid(const double& v, const double& offset, const double& sig_width);
69
85template <typename T>
86T normalizeValueToRange(T value, const T& value_min, const T& value_max,
87 const T& range_min, const T& range_max)
88{
89 static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value,
90 "Integral or floating point type required.");
91 value = std::clamp<T>(value, value_min, value_max);
92 T value_range = value_max - value_min;
93 T new_range = range_max - range_min;
94 return new_range / value_range * (value - value_max) + range_max;
95}
96
106double percent_difference(double a, double b);
Definition circle.h:10
Definition point.h:14
Definition rectangle.h:10