[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Strange graphics behavior

I am having trouble understanding some strange graphics behavior. Consider the code:

(defvar *disp*)
(defvar *vp*)
(proclaim '(special *disp* *vp*))

(setq *disp* (tv:make-window 'tv:window :x 100 :y 100 :size '(500 500)
			       :deexposed-typeout-action :expose))
(send *disp* :set-cursor-visibility nil)
(graphics:graphics-translate 250 250 :stream *disp*)
(graphics:graphics-scale 100 -100 :stream *disp*)

(defun draw-edge (v1 v2 &optional (m *vp*) (s *disp*))
  (let ((from (project-vector v1 m))
	(to (project-vector v2 m)))
    (graphics:draw-line (aref from 0) (aref from 1)(aref to 0)(aref to 1)
			 :stream s)))

If I call (draw-edge (vector -1 1 0) (vector 1 1 0)) I get nothing. If I then
put a break right before the call to graphics:draw-line, I can look at from and
to. Their values are (vector -.2 .2 0) (vector .2 .2 0), which is correct.
If I execute the (graphics:draw-line ... from the debugger, the line drawn is
exactly what I expect. But if I continue, I get nothing. 

What am I missing? Seems to simple not to be obvious.