;;-----------------------------------------------------------
;; Use of the Constraint Satisfaction Module for the 3D
;; recognition of 2D images representing polyhedra
;; Historycally this is the first application domain
;; on which constraint Propagation has been used (Waltz 1970)

(in-package :csp)
(ensure-loaded (add-path *csp-path* "waltz.cl") :force t)

;******************** C U B E    O N   P L A T E **************
;   
;                     E_____________ C
;    	             /             /|
;                B  /____________ / |
;	           |	        A|  |
;	           |	         |  |
;	           |	         |  |
;	           |	         | F|_____ I
;                  |             | /     /|
;                  |_____________|/     / |
;                 / G             D    /  /M
;	         /		      /  /
;	      H /___________________J/  /
;               |                    | /
;             L |____________________|/K


;******************** A   S O L U T I O N **************
;   
;                     E_____________ C
;    	             /           + /|
;                B  /____________ / |
;	           |	   +    A|  |
;	         l |	         |  |
;	           |	        +|  |
;	           |	         | F|_____ I
;                  |             | /-    /|
;                  |_____________|/     / |
;                 / G     -       D   +/  /M
;	         /		      /  /
;	      H /_____________+_____J/  /-
;               |                   +| /
;             L |____________________|/K
:                        -    


(defvar cube-on-plate)
(setq cube-on-plate
  '((A Y-vert B C D)
    (B W-vert G E A)
    (C W-vert E F A)
    (D W-vert F G A)
    (E L-vert C B)
    (F Y-vert D C I)
    (G Y-vert B D H)
    (H W-vert L G J)
    (I W-vert F M J)
    (J Y-vert H I K)
    (K W-vert M L J)
    (L L-vert H K)
    (M L-vert K I)) )

(construct-network-from-picture cube-on-plate)
