2015-11-09 2 views
0

Я использую мит-схему и ее графическую библиотеку. Вы создаете графическое устройство с (define device (make-graphics-device (car (enumerate-graphics-types)))), которое открывает окно для создания графики. (graphics-operation device 'set-foreground-color "black") делает линии черными. Функция (graphics-operation device 'fill-polygon #(0 1 0 0 1 0 1 1)) делает черный квадрат, каждые два числа в аргументе #() является точкой в ​​форме. Если я использую следующее:Scheme graphics

(define (print-cell dev x y) 
    (define off .01) 
    (define x+ (+ x off)) 
    (define x- (- x off)) 
    (define y+ (+ y off)) 
    (define y- (- y off)) 
    (graphics-operation dev 'fill-polygon #(x+ y+ x+ y- x- y+ x- y-))) 

Я получаю ошибку The object x+ passed to integer->flownum is not the correct type

Я не понимаю, это потому, что я могу использовать flonums как арг в #() части функции.

Я хочу print-cell взять набор координат, а затем нарисуйте маленький квадрат с центром в точках таким образом, что (print-cell device .5 .5) превращается в (graphics-operation device 'fill-polygon #(.51 .51 .51 .49 .49 .49 .49 .51))

ответ

1

#() нотации читает vector constants: вы читаете буквенные символы, что объясняет, почему объект передано в integer->flownum, равно x+, а не значение, связанное с x+. Вы должны думать о #(x+) как эквивалент '(x+), но и для векторов. То, что вы хотите сделать, возможно с помощью функции vector:

(vector x+ y+ x+ y- y+ x- y-)