This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Indoor/math/Math.h
FrankE 34e52cd7f0 worked on floorplan (v2)
worked on grid-generation (v2)
new helper methods for geometry
new test cases
2016-07-13 19:11:18 +02:00

36 lines
789 B
C++

#ifndef K_MATH_MATH_H
#define K_MATH_MATH_H
#include "../Defines.h"
#include "../geo/Point3.h"
class Math {
public:
/** ensure val stays within [min:max] */
template <typename Scalar> static inline Scalar clamp(const Scalar min, const Scalar max, const Scalar val) {
if (unlikely(val < min)) {return min;}
if (unlikely(val > max)) {return max;}
return val;
}
/** get the cross-product of u and v */
static inline Point3 cross(const Point3 u, const Point3 v) {
float x = u.y*v.z - u.z*v.y;
float y = u.z*v.x - u.x*v.z;
float z = u.x*v.y - u.y*v.x;
return Point3(x,y,z);
}
/** get the normal-vector for u and v */
static inline Point3 normal(const Point3 u, const Point3 v) {
const Point3 p = cross(u,v);
return p/p.length();
}
};
#endif // K_MATH_MATH_H