openmbvcppinterface 3.1.0 OpenMBV C++ Interface

nurbssurface.h
1 /*
2 OpenMBV - Open Multi Body Viewer.
3 Copyright (C) 2009 Markus Friedrich
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 #ifndef _OPENMBV_NURBSSURFACE_H
21 #define _OPENMBV_NURBSSURFACE_H
22
23 #include <openmbvcppinterface/rigidbody.h>
24 #include <vector>
25
26 namespace OpenMBV {
27
29 class NurbsSurface : public RigidBody {
30 friend class ObjectFactory;
31 protected:
32 std::vector<std::vector<double> > cp;
33 int numU{0}, numV{0};
34 std::vector<double> uKnot, vKnot;
35 NurbsSurface() = default;
36 ~NurbsSurface() override = default;
37 public:
40 const std::vector<std::vector<double> >& getControlPoints() { return cp; }
41 int getNumberOfUControlPoints() { return numU; }
42 int getNumberOfVControlPoints() { return numV; }
43 const std::vector<double>& getUKnotVector() { return uKnot; }
44 const std::vector<double>& getVKnotVector() { return vKnot; }
45
48 void setControlPoints(const std::vector<std::vector<double> > &cp_) { cp = cp_; }
49 void setNumberOfUControlPoints(int numU_) { numU = numU_; }
50 void setNumberOfVControlPoints(int numV_) { numV = numV_; }
51 void setUKnotVector(const std::vector<double>& uKnot_) { uKnot = uKnot_; }
52 void setVKnotVector(const std::vector<double>& vKnot_) { vKnot = vKnot_; }
53
55 void initializeUsingXML(xercesc::DOMElement *element) override;
56
57 xercesc::DOMElement *writeXMLFile(xercesc::DOMNode *parent) override;
58 };
59
60 }
61
62 #endif
OpenMBV::RigidBody
Abstract base class for all rigid bodies.
Definition: rigidbody.h:68
OpenMBV::ObjectFactory
Definition: objectfactory.h:38
OpenMBV::NurbsSurface::initializeUsingXML
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: nurbssurface.cc:43
OpenMBV::NurbsSurface
Definition: nurbssurface.h:29
OpenMBV::NurbsSurface::getControlPoints
const std::vector< std::vector< double > > & getControlPoints()
Definition: nurbssurface.h:40
OpenMBV::NurbsSurface::setControlPoints
void setControlPoints(const std::vector< std::vector< double > > &cp_)
Definition: nurbssurface.h:48