cisst-saw
Loading...
Searching...
No Matches
nmrMultiVariablePowerBasis.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5
6 Author(s): Ofri Sadowsky
7 Created on: 2003-08-20
8
9 (C) Copyright 2003-2007 Johns Hopkins University (JHU), All Rights
10 Reserved.
11
12--- begin cisst license - do not edit ---
13
14This software is provided "as is" under an open source license, with
15no warranty. The complete license can be found in license.txt and
16http://www.cisst.org/cisst/license.txt.
17
18--- end cisst license ---
19*/
20
21
22#ifndef _nmrMultiVariablePowerBasis_h
23#define _nmrMultiVariablePowerBasis_h
24
28
38{
39public:
40 typedef double VariableType;
44
45protected:
48
49public:
51 {
52 Initialize(numVariables, maxPower);
53 }
54
57
62 void Initialize(VariableIndexType numVariables, PowerType maxPower);
63
65 {
66 return BasisContainer.rows();
67 }
68
70 {
71 return BasisContainer.cols() - 1;
72 }
73
75 {
76 return BasisContainer.Element(variableIndex, 1);
77 }
78
80 void GetVariables(VariableType vars[]) const
81 {
83 varsVector.Assign(BasisContainer.Column(1));
84 }
85
88 {
89 return BasisContainer.Column(1).SumOfElements();
90 }
91
94 {
95 return BasisContainer.Element(var, power);
96 }
97
99 virtual void SetVariable(VariableIndexType varIndex, VariableType value) = 0;
100
106 virtual void SetVariables(const VariableType vars[]) = 0;
107
108
111 virtual bool CanSetVariable(VariableIndexType varIndex) const = 0;
112
123
124protected:
127
128public:
134 class StandardPowerBasis;
135
139 class BarycentricBasis;
140};
141
143{
144public:
147 : BaseType(numVariables, maxPower)
148 {}
149
150 virtual bool CanSetVariable(VariableIndexType varIndex) const
151 { return ( (0 <= varIndex) && (varIndex < GetNumVariables()) ); }
152
153 virtual void SetVariable(VariableIndexType varIndex, VariableType value)
154 {
155 CMN_ASSERT(CanSetVariable(varIndex));
156 PrivateSetVariable(varIndex, value);
157 }
158
159 virtual void SetVariables(VariableType const vars[]);
160};
161
162
164{
165protected:
167public:
170 VariableIndexType implicitVarIndex = -1);
171
177
183
186 {
187 CMN_ASSERT( (0 <= newIndex) && (newIndex < GetNumVariables()) );
188 ImplicitVarIndex = newIndex;
189 }
190
191 virtual bool CanSetVariable(VariableIndexType varIndex) const
192 {
193 return ( (0 <= varIndex) &&
194 (varIndex < GetNumVariables()) &&
195 (varIndex != GetImplicitVarIndex()) );
196 }
197
198 virtual void SetVariable(VariableIndexType varIndex, VariableType value);
199
200 virtual void SetVariables(VariableType const vars[]);
201};
202
203#endif
Definition nmrMultiVariablePowerBasis.h:164
VariableType GetImplicitVariable() const
Definition nmrMultiVariablePowerBasis.h:173
VariableIndexType GetImplicitVarIndex() const
Definition nmrMultiVariablePowerBasis.h:179
virtual bool CanSetVariable(VariableIndexType varIndex) const
Definition nmrMultiVariablePowerBasis.h:191
VariableIndexType ImplicitVarIndex
Definition nmrMultiVariablePowerBasis.h:166
void SetImplicitVarIndex(VariableIndexType newIndex)
Definition nmrMultiVariablePowerBasis.h:185
virtual void SetVariable(VariableIndexType varIndex, VariableType value)
virtual void SetVariables(VariableType const vars[])
BarycentricBasis(VariableIndexType numVariables, PowerType maxPower, VariableIndexType implicitVarIndex=-1)
nmrMultiVariablePowerBasis BaseType
Definition nmrMultiVariablePowerBasis.h:168
Definition nmrMultiVariablePowerBasis.h:143
virtual bool CanSetVariable(VariableIndexType varIndex) const
Definition nmrMultiVariablePowerBasis.h:150
StandardPowerBasis(VariableIndexType numVariables, PowerType maxPower)
Definition nmrMultiVariablePowerBasis.h:146
virtual void SetVariables(VariableType const vars[])
virtual void SetVariable(VariableIndexType varIndex, VariableType value)
Definition nmrMultiVariablePowerBasis.h:153
nmrMultiVariablePowerBasis BaseType
Definition nmrMultiVariablePowerBasis.h:145
virtual bool CanSetVariable(VariableIndexType varIndex) const =0
void PrivateSetVariable(VariableIndexType varIndex, VariableType value)
void Initialize(VariableIndexType numVariables, PowerType maxPower)
virtual void SetVariables(const VariableType vars[])=0
nmrPolynomialTermPowerIndex::PowerType PowerType
Definition nmrMultiVariablePowerBasis.h:41
VariableType GetVariablePower(VariableIndexType var, PowerType power) const
Definition nmrMultiVariablePowerBasis.h:93
VariableType GetVariable(VariableIndexType variableIndex) const
Definition nmrMultiVariablePowerBasis.h:74
virtual void SetVariable(VariableIndexType varIndex, VariableType value)=0
double VariableType
Definition nmrMultiVariablePowerBasis.h:40
ValueType EvaluatePowerProduct(const PowerType powers[]) const
nmrMultiVariablePowerBasis(VariableIndexType numVariables, PowerType maxPower)
Definition nmrMultiVariablePowerBasis.h:50
VariableType GetSumOfVariables() const
Definition nmrMultiVariablePowerBasis.h:87
PowerType GetMaxDegree() const
Definition nmrMultiVariablePowerBasis.h:69
void GetVariables(VariableType vars[]) const
Definition nmrMultiVariablePowerBasis.h:80
BasisContainerType BasisContainer
Definition nmrMultiVariablePowerBasis.h:47
virtual ~nmrMultiVariablePowerBasis()
Definition nmrMultiVariablePowerBasis.h:55
vctDynamicMatrix< VariableType > BasisContainerType
Definition nmrMultiVariablePowerBasis.h:46
nmrPolynomialTermPowerIndex::VariableIndexType VariableIndexType
Definition nmrMultiVariablePowerBasis.h:42
VariableIndexType GetNumVariables() const
Definition nmrMultiVariablePowerBasis.h:64
VariableType ValueType
Definition nmrMultiVariablePowerBasis.h:43
int PowerType
Definition nmrPolynomialTermPowerIndex.h:98
int VariableIndexType
Definition nmrPolynomialTermPowerIndex.h:95
Definition vctForwardDeclarations.h:157
ThisType & Assign(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &other)
Definition vctDynamicVectorBase.h:242
Dynamic vector referencing existing memory.
Definition vctDynamicVectorRef.h:78
#define CMN_ASSERT(expr)
Definition cmnAssert.h:97
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Rules of exporting.
Declare class nmrPolynomialTermPowerIndex to represent the power index of a single term in a multi-va...
Declaration of vctDynamicMatrix.