Files
Webcam/include/framework/geometry/plane.h
2026-06-22 11:49:35 +02:00

56 lines
1.2 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __NPLANE__
#define __NPLANE__
#include "math/vector.h"
namespace GS {
/*!
@short Plane.
ax + by + cz + d = 0
@author Emmanuel Julien (ejulien@nworks.fr)
*/
class Plane
{
float d; ///< Distance to origin.
Vector4 p, n; ///< Point in plane and normal.
public:
/// Return plane normal.
inline const Vector4 &GetNormal() const
{ return n; }
/*!
@short Return point distance to plane.
Distance is signed, positive when the point is in front of the plane,
negative otherwise.
*/
inline float DistanceToPlane(const Vector4 &p) const
{ return p.Dot(n) + d; }
/// Set plane from point/normal and an optional transformation matrix.
void Set(const Vector4 *_p, const Vector4 &_n, const Matrix4 * = 0);
/// Set plane three vectors and an optional transformation matrix.
void Set(const Vector4 _p[3], const Matrix4 * = 0);
Plane();
Plane(const Vector4 &_p, const Vector4 &_n, const Matrix4 *_m = 0)
{ Set(&_p, _n, _m); }
};
} // GS
#endif // __NPLANE__