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

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

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

revision 1.4 by tjl, Thu May 29 16:35:16 2003 UTC revision 1.5 by tjl, Thu May 29 18:47:17 2003 UTC
# Line 167  struct FilletSpan { Line 167  struct FilletSpan {
167    
168      template <class Blender> ZVec point(float fract, const Blender &blend, ZVec *intern = 0) {      template <class Blender> ZVec point(float fract, const Blender &blend, ZVec *intern = 0) {
169          if(type == CLEAVE) {          if(type == CLEAVE) {
             if(intern) *intern = ctr;  
170              if(fract < .5) {              if(fract < .5) {
171                  // Angle of real current sample                  // Angle of real current sample
172                  float ang = lerp(aa, aang, 2*fract);                  float ang = lerp(aa, aang, 2*fract);
# Line 187  struct FilletSpan { Line 186  struct FilletSpan {
186                                      f);                                      f);
187                  p.z = lerp(ctr.z, za, ((p-ctr).length() - r) / (this->da-r));                  p.z = lerp(ctr.z, za, ((p-ctr).length() - r) / (this->da-r));
188    
189                    if(intern) {
190                        if(fract < .47) {
191                            *intern = p-ctr;
192                            intern->z = 0;
193                            *intern -= intern->dot(a.dirconn.cw90()) * a.dirconn.cw90();
194                            intern->z = p.z - ctr.z;
195                            if(intern->length() <= r) *intern = ZVec(0,0,0);
196                            *intern += ctr;
197                        } else {
198                            *intern = ctr;
199                        }
200                    }
201    
202                  //DBG(dbg_fillets) << "f<.5: "<<ang<<" "<<ra<<" "<<rb<<" "<<                  //DBG(dbg_fillets) << "f<.5: "<<ang<<" "<<ra<<" "<<rb<<" "<<
203                  //          p <<"\n";                  //          p <<"\n";
204                  return p;                  return p;
# Line 210  struct FilletSpan { Line 222  struct FilletSpan {
222                                      f);                                      f);
223                  p.z = lerp(ctr.z, zb, ((p-ctr).length() - r) / (this->db-r));                  p.z = lerp(ctr.z, zb, ((p-ctr).length() - r) / (this->db-r));
224    
225                    if(intern) {
226                        if(fract < .47) {
227                            *intern = p-ctr;
228                            intern->z = 0;
229                            *intern -= intern->dot(b.dirconn.cw90()) * b.dirconn.cw90();
230                            intern->z = p.z - ctr.z;
231                            if(intern->length() <= r) *intern = ZVec(0,0,0);
232                            *intern += ctr;
233                        } else {
234                            *intern = ctr;
235                        }
236                    }
237    
238    
239    
240                  return p;                  return p;
241    
242              }              }
# Line 236  struct FilletSpan { Line 263  struct FilletSpan {
263              }              }
264              ZVec res = ctr + d * resr;              ZVec res = ctr + d * resr;
265              if(intern) {              if(intern) {
266                  if(fract > .48 && fract < .52) {                  if(fract < .47) {
                     *intern = ctr;  
                 } else if(ra > rb) {  
267                      *intern = d*resr;                      *intern = d*resr;
268                      *intern -= intern->dot(a.dirconn.cw90()) * a.dirconn.cw90();                      *intern -= intern->dot(a.dirconn.cw90()) * a.dirconn.cw90();
269                      intern->z = z - ctr.z;                      intern->z = z - ctr.z;
270                      if(intern->length() <= r) *intern = ZVec(0,0,0);                      if(intern->length() <= r) *intern = ZVec(0,0,0);
271                      *intern += ctr;                      *intern += ctr;
272                    } else if(fract < .53) {
273                        *intern = ctr;
274                  } else {                  } else {
275                      *intern = d*resr;                      *intern = d*resr;
276                      *intern -= intern->dot(b.dirconn.cw90()) * b.dirconn.cw90();                      *intern -= intern->dot(b.dirconn.cw90()) * b.dirconn.cw90();

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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