00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _TRIANGULAR_BSPLINE_H
00026 #define _TRIANGULAR_BSPLINE_H
00027
00028 #include "nurbs_global.h"
00029
00030 #include "point_nd.h"
00031 #include "hpoint_nd.h"
00032 #include "barray.h"
00033
00034 #include "nurbs.h"
00035 #include "nurbsS.h"
00036
00039 namespace PLib {
00040
00041 template <class T, int D>
00042 class TriangularBSpline {
00043 private:
00044 BasicArray<Point_nD<T,D> > cp;
00045 int deg ;
00046 public:
00047 TriangularBSpline(int degree);
00048 Point_nD<T,D>& b(int i, int j, int);
00049 Point_nD<T,D> b(int, int ,int) const ;
00050 Point_nD<T,D> operator()(T u, T v) const;
00051
00052 };
00053
00054 template <class T, int D>
00055 class RTriangularBSpline {
00056 private:
00057 BasicArray<HPoint_nD<T,D> > cp;
00058 int deg ;
00059 public:
00060 RTriangularBSpline(int degree);
00061 HPoint_nD<T,D>& b(int, int, int);
00062 HPoint_nD<T,D> b(int, int ,int) const ;
00063 HPoint_nD<T,D> operator()(T u, T v) const;
00064
00065 int writeVRML(const char* filename, const Color& color=whiteColor, int Nu=20, int Nv=20, int Nw=20) const;
00066 int writeVRML(ostream& fout, const Color& color=whiteColor, int Nu=20, int Nv=20, int Nw=20) const;
00067
00068 void setDegree(int d) ;
00069 };
00070
00071 template < class T, int D> void convert(const NurbsSurface<T,D>& surf, RTriangularBSpline<T,D> &t1, RTriangularBSpline<T,D> &t2) ;
00072
00073 }
00074
00075
00076 #endif