/[libvob]/libvob/include/vob/geom/Fillets2.hxx
ViewVC logotype

Diff of /libvob/include/vob/geom/Fillets2.hxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.28 by jvk, Fri Jul 4 12:49:53 2003 UTC revision 1.29 by jvk, Fri Jul 4 13:57:30 2003 UTC
# Line 766  namespace Geom { Line 766  namespace Geom {
766                            
767              a0 = atan(0.5 * c.t / c.d);              a0 = atan(0.5 * c.t / c.d);
768    
             da = (f.tangentAngle - a0) / n;  
             sin_da = sin(da);  
   
769              for (int i = 1; i < n; i++) {              for (int i = 1; i < n; i++) {
770                  float t = i * (1.0 / n);                  float t = i * (1.0 / n);
771                  float a = a0 + t * (f.tangentAngle - a0);                  float a = a0 + (t*t) * (f.tangentAngle - a0);
772                  bool success;                  bool success;
773                  float fract;                  float fract;
774                  ZVec pt = f.point(dirVec(a), success, &fract, .0001);                  ZVec pt = f.point(dirVec(a), success, &fract, .0001);
# Line 789  namespace Geom { Line 786  namespace Geom {
786          float rad_rtbl(Vec v) const {          float rad_rtbl(Vec v) const {
787              int n = rtbl.size() - 1;              int n = rtbl.size() - 1;
788              float a = v.atan();              float a = v.atan();
789              float t = (a - a0) / (f.tangentAngle - a0);              if (a < a0) return rtbl[0];
790                float t = sqrt((a - a0) / (f.tangentAngle - a0));
791              int i = (int)(t * n);              int i = (int)(t * n);
             if (t < 0) return rtbl[0];  
792              if (i >= n) return rtbl[n];              if (i >= n) return rtbl[n];
793    
794              float fract = t * n - i;              float fract = t * n - i;
795              float r0 = rtbl[i];              float r0 = rtbl[i];
796              float r1 = rtbl[i + 1];              float r1 = rtbl[i + 1];
797    
798              return r0 * r1 / (r0 * fract + r1 * (1-fract));              // lerp
799              return (1 - fract) * r0 + fract * r1;              //return (1 - fract) * r0 + fract * r1;
800              return r0 * r1 * sin_da / (r0 * sin(fract * da) +              
801                                         r1 * sin((1-fract) * da)) >? r1;              // polar lerp approximation
802                //return r0 * r1 / (r0 * fract + r1 * (1-fract));
803    
804                // polar lerp
805                float da = (f.tangentAngle - a0) / n;
806                da *= 2 * t + 1E-4;// compensate for the squaring
807                return r0 * r1 * sin(da) / (r0 * sin(fract * da) +
808                                            r1 * sin((1-fract) * da)) >? r1;
809          }          }
810      };      };
811    

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26