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 "nurbsS.h"
00035
00038 namespace PLib {
00039
00040 template <class T, int D>
00041 class TriangularBSpline {
00042 private:
00043 BasicArray<Point_nD<T,D> > cp;
00044 int deg ;
00045 public:
00046 TriangularBSpline(int degree);
00047 Point_nD<T,D>& b(int i, int j, int);
00048 Point_nD<T,D> b(int, int ,int) const ;
00049 Point_nD<T,D> operator()(T u, T v) const;
00050
00051 };
00052
00053 template <class T, int D>
00054 class RTriangularBSpline {
00055 private:
00056 BasicArray<HPoint_nD<T,D> > cp;
00057 int deg ;
00058 public:
00059 RTriangularBSpline(int degree);
00060 HPoint_nD<T,D>& b(int, int, int);
00061 HPoint_nD<T,D> b(int, int ,int) const ;
00062 HPoint_nD<T,D> operator()(T u, T v) const;
00063
00064 int writeVRML(const char* filename, const Color& color=whiteColor, int Nu=20, int Nv=20, int Nw=20) const;
00065 int writeVRML(ostream& fout, const Color& color=whiteColor, int Nu=20, int Nv=20, int Nw=20) const;
00066
00067 void setDegree(int d) ;
00068 };
00069
00070 template < class T, int D> void convert(const NurbsSurface<T,D>& surf, RTriangularBSpline<T,D> &t1, RTriangularBSpline<T,D> &t2) ;
00071
00072 }
00073
00074
00075 #endif