⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 derivative.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
字号:
// Copyright (c) 2005  Stanford University (USA).// All rights reserved.//// This file is part of CGAL (www.cgal.org); you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public License as// published by the Free Software Foundation; version 2.1 of the License.// See the file LICENSE.LGPL distributed with CGAL.//// Licensees holding a valid commercial license may use this file in// accordance with the commercial license agreement provided with the software.//// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.//// $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.3-branch/Kinetic_data_structures/include/CGAL/Polynomial/internal/Rational/Derivative.h $// $Id: Derivative.h 31186 2006-05-18 20:31:29Z drussel $// //// Author(s)     : Daniel Russel <drussel@alumni.princeton.edu>#ifndef CGAL_POLYNOMIAL_INTERNAL_DERIVATIVE_H#define CGAL_POLYNOMIAL_INTERNAL_DERIVATIVE_H#include <CGAL/Polynomial/basic.h>#include <iterator>CGAL_POLYNOMIAL_BEGIN_INTERNAL_NAMESPACEtemplate <class Fn>struct Derivative{private:  typedef typename Fn::iterator Cit;  struct It  {    It(Cit it, int i): i_(i), cit_(it) {}    It(){}    typedef typename Fn::iterator MCit;    typedef typename std::iterator_traits<MCit> Traits;    typedef typename Traits::iterator_category iterator_category;    typedef typename Traits::value_type value_type;    typedef typename Traits::pointer pointer;    typedef typename Traits::reference reference;    typedef typename Traits::difference_type difference_type;    value_type operator*() const    {      return value_type(i_)**cit_;    }    pointer operator->() const    {      return value_type(i_)**cit_;    }	      bool operator<(It o) const    {      return cit_ < o.cit_;    }    It operator++() {      ++i_;      ++cit_;      return *this;    }    It operator++(int) {      It t=*this;      ++i_;      ++cit_;      return t;    }    It operator--() {      --i_;      --cit_;      return *this;    }    It operator--(int) {      It t=*this;      --i_;      --cit_;      return t;    }    bool operator==(It o) const    {      return cit_ == o.cit_;    }    bool operator!=(It o) const    {      return cit_ != o.cit_;    }    difference_type operator-(It o) const    {      return cit_-o.cit_;    }    It operator+=(difference_type i) {      cit_+= i;      i_+= i;      return *this;    }  protected:    int i_;    MCit cit_;  };public:  typedef Fn result_type;  typedef Fn argument_type;  result_type operator()(const argument_type &o) const  {    if (o.is_constant()) { return result_type(typename result_type::NT(0)); }    else {      It b(o.begin(),0);      ++b;      return result_type(b, It(o.end(), o.degree()+1));    }  }    void write(std::ostream &out) const  {    out << "diff";  }};CGAL_POLYNOMIAL_END_INTERNAL_NAMESPACE#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -