41 lines
1.8 KiB
C
41 lines
1.8 KiB
C
![]() |
//============ Copyright (c) Valve Corporation, All rights reserved. ============
|
||
|
//
|
||
|
// Code to compute the equation of a plane with a least-squares residual fit.
|
||
|
//
|
||
|
//===============================================================================
|
||
|
|
||
|
#ifndef PLANEFIT_H
|
||
|
#define PLANEFIT_H
|
||
|
|
||
|
#if defined( COMPILER_MSVC )
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
class VPlane;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Finds a plane to best fit a set of points. The least-squares residual
|
||
|
// error is computed along the X/Y/Z-axis, not orthogonally to the plane,
|
||
|
// since doing the latter requires an SVD or a 3x3 eigendecomposition.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool ComputeLeastSquaresPlaneFitX( const Vector *pPoints, int nNumPoints, VPlane *pFitPlane );
|
||
|
bool ComputeLeastSquaresPlaneFitY( const Vector *pPoints, int nNumPoints, VPlane *pFitPlane );
|
||
|
bool ComputeLeastSquaresPlaneFitZ( const Vector *pPoints, int nNumPoints, VPlane *pFitPlane );
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// *WORK-IN-PROGRESS*
|
||
|
// Finds a plane to best fit a set of points. The least-squares residual
|
||
|
// error is computed along the optimal axis, orthogonally to the plane,
|
||
|
// and requires a 3x3 eigendecomposition.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool ComputeLeastSquaresOrthogonalPlaneFit( const Vector *pPoints, int nNumPoints, VPlane *pFitPlane );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Given a plane and a set of points, computes the sum of
|
||
|
// squared orthogonal residuals.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
float ComputeSquaredError( const Vector *pPoints, int nNumPoints, const VPlane *pFitPlane );
|
||
|
|
||
|
#endif // PLANEFIT_H
|