bspline.h
Go to the documentation of this file.
00001 // Software License Agreement (BSD License)
00002 
00003 //   Copyright (c) 2011, Shulei Zhu <schuleichu@gmail.com>
00004 //   All rights reserved.
00005 
00006 //   Redistribution and use in source and binary forms, with or without
00007 //   modification, are permitted provided that the following conditions
00008 //   are met:
00009 
00010 //    * Redistributions of source code must retain the above copyright
00011 //      notice, this list of conditions and the following disclaimer.
00012 //    * Redistributions in binary form must reproduce the above
00013 //      copyright notice, this list of conditions and the following
00014 //      disclaimer in the documentation and/or other materials provided
00015 //      with the distribution.
00016 //    * Neither the name of Shulei Zhu nor the names of its
00017 //      contributors may be used to endorse or promote products derived
00018 //      from this software without specific prior written permission.
00019 
00020 //   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00021 //   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022 //   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023 //   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00024 //   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 //   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026 //   BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027 //   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00028 //   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00029 //   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00030 //   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00031 //   POSSIBILITY OF SUCH DAMAGE.
00032 // bspline.h --- 
00033 // File            : bspline.h
00034 // Created: Sa Jun 18 14:06:52 2011 (+0200)
00035 // Author: Shulei Zhu
00036 
00037 // Code:
00038 
00039 class BSpline{
00040 public:
00041   BSpline();
00042   /* BSpline(const BSpline &bs){} */
00043   BSpline(int n, int resolution, std::vector<cv::Point3d> control_points);
00044   ~BSpline();
00045   /* 
00046    * void release(){
00047    *     /\* basic_mat_.release(); *\/
00048    *     /\* 
00049    *      * if (curve_ != NULL) delete [] curve_;
00050    *      * if (tangent_ != NULL) delete [] tangent_;    
00051    *      *\/
00052    * }
00053    */
00054 
00055   /* void clear(){delete [] basic_mat_; delete [] curve_; delete [] tangent_;} */
00056   inline cv::Point3d& operator[](const size_t index)
00057   {
00058     return curve_[index];
00059   }
00060 
00061   inline const cv::Point3d& operator[](const size_t index) const
00062   {
00063     return curve_[index];
00064   }
00065 
00066   inline cv::Point3d& dt(const size_t index)
00067   {
00068     return tangent_[index];
00069   }
00070   cv::Mat basic_mat_;
00071 private:
00072   void computeKnots();
00073   void computePoint(std::vector<cv::Point3d> control,
00074                     cv::Point3d *p,
00075                     cv::Point3d *tangent,
00076                     double *mat_ptr,
00077                     double v,
00078                     int degree);
00079   double basic(int k, int t, double v);
00080   double basic(int i, int degree, double t, double *bp);
00081   std::vector<int> knots;
00082   cv::Point3d *curve_;
00083   cv::Point3d *tangent_;
00084 };


contracting_curve_density_algorithm
Author(s): Shulei Zhu, Dejan Pangercic
autogenerated on Mon Oct 6 2014 10:42:02