Changeset 1548:b96c5b7a0e92 in lemon-0.x
- Timestamp:
- 07/12/05 18:17:16 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2044
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/bezier.h
r1471 r1548 59 59 return Bezier1(conv(p1,p2,t),p2); 60 60 } 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(); }65 61 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)); } 66 68 }; 67 69 … … 92 94 return Bezier2(conv(q,r,t),r,p3); 93 95 } 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)); } 98 102 }; 99 103 … … 137 141 return Bezier3(c,b,r,p4); 138 142 } 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 143 166 }; 144 167
Note: See TracChangeset
for help on using the changeset viewer.