HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GU_ScatteredInterpHyperplane.h
Go to the documentation of this file.
1 /*
2 * PROPRIETARY INFORMATION. This software is proprietary to
3 * Side Effects Software Inc., and is not to be reproduced,
4 * transmitted, or disclosed in any way without written permission.
5 *
6 * NAME: GU_ScatteredInterpHyperplane.h (GU Library, C++)
7 *
8 * COMMENTS: Each column is an example, one value for each DOF.
9 * Each row is a DOF, one value for each example.
10 */
11 
12 #ifndef __GU_SCATTEREDINTERPHYPERPLANE_H__
13 #define __GU_SCATTEREDINTERPHYPERPLANE_H__
14 
15 #include "GU_API.h"
16 #include <SYS/SYS_Types.h>
17 
18 #include "GU_LeastSquares.h"
19 #include "GU_ScatteredInterp.h"
20 
22 {
23 public:
25  : myNumDOF(-1),
26  myNumExamples(-1),
27  myNumInputDimensions(-1)
28 
29  {
30  }
31 
33  {
34  }
35 
36  struct Parms
37  {
40 
41  // LeastSquares solver parms
45 
47  : theClampInput(false),
48  theFormulationType(GU_SCATTERED_INTERP_AUTO),
49  theSolverType(GU_FAST_LEAST_SQUARES),
50  theDamping(0.0),
51  theMaxIterations(0)
52  {
53  }
54  };
55 
56  bool solveForCoefficients(
57  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &source, bool source_changed,
58  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &target, bool target_changed,
59  const Parms &params);
60 
61  template <typename U>
62  typename std::enable_if<GU_Matrix<U>::has_row, void>::type
63  computeOutput(
64  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &input,
65  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &source,
66  U *output_data);
67 
68 private:
69  bool hasChanged(
70  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &source,
71  const Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> &target,
72  const Parms &parms) const;
73 
74  Eigen::Matrix<fpreal, Eigen::Dynamic, Eigen::Dynamic> myLinearCoefficients;
75  Eigen::Matrix<fpreal, Eigen::Dynamic, 1> mySourceMin;
76  Eigen::Matrix<fpreal, Eigen::Dynamic, 1> mySourceMax;
77 
78  // Cached params
79  int myNumDOF;
80  int myNumExamples;
81  int myNumInputDimensions;
82  Parms myParms;
83 };
84 
85 #include "GU_ScatteredInterpHyperplaneImpl.h"
86 
87 #endif // __GU_SCATTEREDINTERPHYPERPLANE_H__
GLenum GLenum GLenum input
Definition: glew.h:13879
GLenum target
Definition: glew.h:2865
GLsizei GLsizei GLchar * source
Definition: glew.h:1832
#define GU_API
Definition: GU_API.h:14
GLuint GLuint GLsizei GLenum type
Definition: glew.h:1253
fpreal64 fpreal
Definition: SYS_Types.h:277
GU_LeastSquaresSolverType
const GLfloat * params
Definition: glew.h:1531
GU_ScatteredInterpType