COIN-OR::LEMON - Graph Library

Changeset 1548:b96c5b7a0e92 in lemon-0.x


Ignore:
Timestamp:
07/12/05 18:17:16 (14 years ago)
Author:
Alpar Juttner
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2044
Message:

Bezier classes are made more consistent

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/bezier.h

    r1471 r1548  
    5959    return Bezier1(conv(p1,p2,t),p2);
    6060  }
    61   Bezier1 revert() { return Bezier1(p2,p1);}
    62   Bezier1 operator()(double a,double b) { return before(b).after(a/b); }
    63   xy grad() { return p2-p1; }
    64   xy grad(double) { return grad(); }
    6561
     62  Bezier1 revert() const { return Bezier1(p2,p1);}
     63  Bezier1 operator()(double a,double b) const { return before(b).after(a/b); }
     64  xy grad() const { return p2-p1; }
     65  xy norm() const { return rot90(p2-p1); }
     66  xy grad(double) const { return grad(); }
     67  xy norm(double t) const { return rot90(grad(t)); }
    6668};
    6769
     
    9294    return Bezier2(conv(q,r,t),r,p3);
    9395  }
    94   Bezier2 revert() { return Bezier2(p3,p2,p1);}
    95   Bezier2 operator()(double a,double b) { return before(b).after(a/b); }
    96   Bezier1 grad() { return Bezier1(2.0*(p2-p1),2.0*(p3-p2)); }
    97   xy grad(double t) { return grad()(t); } 
     96  Bezier2 revert() const { return Bezier2(p3,p2,p1);}
     97  Bezier2 operator()(double a,double b) const { return before(b).after(a/b); }
     98  Bezier1 grad() const { return Bezier1(2.0*(p2-p1),2.0*(p3-p2)); }
     99  Bezier1 norm() const { return Bezier1(2.0*rot90(p2-p1),2.0*rot90(p3-p2)); }
     100  xy grad(double t) const { return grad()(t); }
     101  xy norm(double t) const { return rot90(grad(t)); }
    98102};
    99103
     
    137141      return Bezier3(c,b,r,p4);
    138142    }
    139   Bezier3 revert() { return Bezier3(p4,p3,p2,p1);}
    140   Bezier3 operator()(double a,double b) { return before(b).after(a/b); }
    141   Bezier2 grad() { return Bezier2(3.0*(p2-p1),3.0*(p3-p2),3.0*(p4-p3)); }
    142   xy grad(double t) { return grad()(t); }
     143  Bezier3 revert() const { return Bezier3(p4,p3,p2,p1);}
     144  Bezier3 operator()(double a,double b) const { return before(b).after(a/b); }
     145  Bezier2 grad() const { return Bezier2(3.0*(p2-p1),3.0*(p3-p2),3.0*(p4-p3)); }
     146  Bezier2 norm() const { return Bezier2(3.0*rot90(p2-p1),
     147                                  3.0*rot90(p3-p2),
     148                                  3.0*rot90(p4-p3)); }
     149  xy grad(double t) const { return grad()(t); }
     150  xy norm(double t) const { return rot90(grad(t)); }
     151
     152  template<class R,class F,class S,class D>
     153  R recSplit(F &_f,const S &_s,D _d) const
     154  {
     155    const xy a=(p1+p2)/2;
     156    const xy b=(p2+p3)/2;
     157    const xy c=(p3+p4)/2;
     158    const xy d=(a+b)/2;
     159    const xy e=(b+c)/2;
     160    const xy f=(d+e)/2;
     161    R f1=_f(Bezier3(p1,a,d,e),_d);
     162    R f2=_f(Bezier3(e,d,c,p4),_d);
     163    return _s(f1,f2);
     164  }
     165 
    143166};
    144167
Note: See TracChangeset for help on using the changeset viewer.