SOFUS ..
Namespaces | Typedefs | Enumerations | Functions
smath.hpp File Reference

Simple math. More...

#include <sps/cenv.h>
#include <sps/sps_export.h>
#include <sps/math.h>
#include <sps/zip>
#include <cstring>
#include <iostream>
#include <limits>
#include <utility>
#include <sps/smath_types.hpp>
Include dependency graph for smath.hpp:
This graph shows which files directly or indirectly include this file:

Namespaces

namespace  sps
 Single Purpose Solutions. A number of lighweight additions to C and/or C++.
 

Typedefs

typedef enum sps::RotationConvention RotationConvention
 

Enumerations

enum  RotationConvention { EulerIntrinsicZYZ = 0x00 , EulerIntrinsicYXY = 0x01 }
 

Functions

template<typename T >
constexpr int signum (T x, std::false_type is_signed)
 
template<typename T >
constexpr int signum (T x, std::true_type is_signed)
 
template<typename T >
constexpr int signum (T x)
 
template<typename I , typename J >
std::pair< I, J > minmax_weighted_element (I begin, I end, J it)
 
template<typename T , typename U >
std::pair< T, T > minmax_delay (const T *xs, const U *ws, size_t nData)
 
template<class T >
dist_point_to_point (const point_t< T > &a, const point_t< T > &b)
 
template<typename T >
dot (const point_t< T > &a, const point_t< T > &b)
 
template<typename T >
point_t< T > operator- (const point_t< T > &a, const point_t< T > &b)
 
template<typename T >
point_t< T > operator+ (const point_t< T > &a, const point_t< T > &b)
 
template<typename T >
point_t< T > cross (const point_t< T > &a, const point_t< T > &b)
 
template<typename T >
point_t< T > operator* (const T &a, const point_t< T > &b)
 
template<typename T >
norm (const point_t< T > &a)
 
template<typename T >
dist_point_to_line (const point_t< T > &point, const point_t< T > &pointOnLine, const point_t< T > &direction)
 
template<typename T >
sgn_dist_to_plane (const point_t< T > &point, const point_t< T > &pointOnPlane, const point_t< T > &unitNormal)
 
template<typename T >
dist_point_to_circle (const point_t< T > &point, const circle_t< T > &circle)
 
template<typename T >
void dist_point_to_circle_local (const point_t< T > &point, const circle_t< T > &circle, T *r, T *z, T *distNear)
 
template<typename T >
void dist_point_to_circle_local (const point_t< T > &point, const circle_t< T > &circle, T *r, T *z, T *distNear, T *distFar)
 
template<typename T >
sps::point_t< T > clamp_vector (const sps::point_t< T > &point, const sps::bbox_t< T > &box)
 
template<typename T >
void compute_bounding_box3 (const T *pos, const size_t nPos, sps::bbox_t< T > *box)
 
template<typename T >
bool point_inside_box (const sps::point_t< T > &point, const sps::bbox_t< T > &box)
 
template<typename T >
sps::point_t< T > nearest_point_on_bbox (const sps::point_t< T > &point, const sps::bbox_t< T > &box)
 
template<typename T >
sps::point_t< T > farthest_point_on_bbox (const sps::point_t< T > &point, const sps::bbox_t< T > &box)
 
template<typename T >
void dists_most_distant_and_closest (const sps::bbox_t< T > &box0, const sps::bbox_t< T > &box1, T *distNear, T *distFar)
 
template<typename T , RotationConvention conv>
void basis_vectors (sps::point_t< T > *output, const sps::euler_t< T > &euler, size_t index)
 
template<typename T , RotationConvention conv>
void euler2rot (const sps::euler_t< T > &euler, sps::mat3_t< T > *mat)
 
template<typename T , RotationConvention conv>
void rot2euler (const sps::mat3_t< T > &rot, euler_t< T > *euler)
 
template<typename T , RotationConvention conv>
void basis_rotate (const sps::point_t< T > &input, const euler_t< T > &euler, sps::point_t< T > *output)
 
template<typename T >
void basis_vectors (T *vec0, T *vec1, T *vec2, const sps::euler_t< T > &euler)
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const point_t< T > &point)
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const mat3_t< T > &mat)
 
template<typename T >
void compute_bounding_box_circle (const sps::circle_t< T > &circle, sps::bbox_t< T > *box)
 
template<typename T >
void arc_point_ellipsis (const sps::ellipsis_t< T > &ellipsis, const T &arc, sps::point_t< T > *point)
 
template<typename T >
void tan_point_ellipsis (const sps::ellipsis_t< T > &ellipsis, const T &y, const T &x, sps::point_t< T > *point)
 
template<typename T >
void intcp_line_rect (const sps::element_rect_t< T > &rect, const T &y, const T &x, sps::point_t< T > *point)
 

Detailed Description

Simple math.

Author
Jens Munk Hansen jens..nosp@m.munk.nosp@m..hans.nosp@m.en@g.nosp@m.mail..nosp@m.com
Date
Sat Oct 10 18:41:43 2015

Copyright 2017 Jens Munk Hansen

Function Documentation

◆ signum() [1/3]

constexpr int signum ( x)
inlineconstexpr

Signum function

Parameters
x
Returns

References signum().

Here is the call graph for this function:

◆ signum() [2/3]

constexpr int signum ( x,
std::false_type  is_signed 
)
inlineconstexpr

Signum function

Parameters
x
is_signed
Returns

Referenced by signum().

Here is the caller graph for this function:

◆ signum() [3/3]

constexpr int signum ( x,
std::true_type  is_signed 
)
inlineconstexpr

Signum function

Parameters
x
is_signed
Returns