Changeset 27061 in project


Ignore:
Timestamp:
07/13/12 04:32:35 (9 years ago)
Author:
Ivan Raikov
Message:

kd-tree: bug fix in kd-tree-remove

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/kd-tree/trunk/kd-tree.scm

    r27053 r27061  
    628628      (letrec ((tree-remove
    629629                (lambda (t p-kill)
     630
     631                 
     632;                  (fprintf (current-error-port) "kd-tree-remove: t = ~A~%" t)
     633;                  (fprintf (current-error-port) "kd-tree-remove: p-kill = ~A~%" p-kill)
     634
    630635                  (cases kd-tree t
    631636                         (KdLeaf (ii pp vv axis)
     637
     638;                                 (fprintf (current-error-port) "kd-tree-remove (KdLeaf): vv = ~A~%" vv)
     639
    632640                                 (if vv
    633641                                     (let ((ipvs (filter-map
    634642                                                  (lambda (i p v) (and (equal? p p-kill) (list i p v)))
    635643                                                  (reverse (cis:elements ii)) pp vv)))
    636                                          ;(fprintf (current-error-port) "kd-tree-remove: ipvs = ~A~%" ipvs)
    637                                          ;(fprintf (current-error-port) "kd-tree-remove: pp = ~A~%" pp)
    638                                          ;(fprintf (current-error-port) "kd-tree-remove: vv = ~A~%" vv)
     644
     645;                                        (fprintf (current-error-port) "kd-tree-remove (KdLeaf): ipvs = ~A~%" ipvs)
     646;                                        (fprintf (current-error-port) "kd-tree-remove (KdLeaf): pp = ~A~%" pp)
     647;                                        (fprintf (current-error-port) "kd-tree-remove (KdLeaf): vv = ~A~%" vv)
     648
    639649                                       (and (pair? ipvs)
    640650                                            (let ((ii1 (fold (lambda (i ax) (cis:remove i ax))
     
    646656                                                             vv (map caddr ipvs)))
    647657                                                  )
     658;                                              (fprintf (current-error-port) "kd-tree-remove (KdLeaf): ii1 = ~A~%" ii1)
     659
    648660                                              (KdLeaf ii1 pp1 vv1 axis))
    649661                                            ))
     
    663675                         (KdNode (l p i v r axis ci)
    664676
    665                                  ;(fprintf (current-error-port) "kd-tree-remove: p = ~A~%" p)
    666                                  ;(fprintf (current-error-port) "kd-tree-remove: p-kill = ~A~%" p-kill)
     677;                                (fprintf (current-error-port) "kd-tree-remove (KdNode): p = ~A~%" p)
     678;                                (fprintf (current-error-port) "kd-tree-remove (KdNode): p-kill = ~A~%" p-kill)
    667679                                 
    668680                                 (if (equal? p p-kill)
     
    687699                                                (let ((min1 (cond ((and (kd-tree-empty? ll)
    688700                                                                        (kd-tree-empty? rr))
    689                                                                    (cis:singleton i))
     701                                                                   i)
    690702                                                                  ((kd-tree-empty? ll)
    691703                                                                   (kd-tree-min-index rr))
     
    694706                                                      (max1 (cond ((and (kd-tree-empty? ll)
    695707                                                                        (kd-tree-empty? rr))
    696                                                                    (cis:empty))
     708                                                                   i)
    697709                                                                  ((kd-tree-empty? rr)
    698710                                                                   (kd-tree-max-index ll))
     
    702714
    703715                                                (KdNode ll p i v rr axis
    704                                                         (cis:add (if (integer? i) i (car i))
    705                                                                  (cis:interval min1 max1)))
     716                                                        (cis:add i (cis:interval min1 max1)))
    706717                                                )))
    707718
     
    715726                                                (let ((min1 (cond ((and (kd-tree-empty? ll)
    716727                                                                        (kd-tree-empty? rr))
    717                                                                    (cis:singleton i))
     728                                                                   i)
    718729                                                                  ((kd-tree-empty? ll)
    719730                                                                   (kd-tree-min-index rr))
     
    722733                                                      (max1 (cond ((and (kd-tree-empty? ll)
    723734                                                                        (kd-tree-empty? rr))
    724                                                                    (cis:empty))
     735                                                                   i)
    725736                                                                  ((kd-tree-empty? rr)
    726737                                                                   (kd-tree-max-index ll))
     
    729740                                                      )
    730741                                                (KdNode ll p i v rr axis
    731                                                         (cis:add (if (integer? i) i (car i))
    732                                                                  (cis:interval min1 max1)))
     742                                                        (cis:add i (cis:interval min1 max1)))
    733743                                                )))
    734744                                     )))
Note: See TracChangeset for help on using the changeset viewer.