MIT схема ничья - PullRequest
       23

MIT схема ничья

1 голос
/ 29 марта 2011

Удалось ли кому-нибудь добиться отрисовки линий по MIT-схеме?

https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.4

Ответы [ 5 ]

5 голосов
/ 29 марта 2011

Ключевые слова:

Например, предположим, что у нас есть процедура рисования линии, которая рисует линию на экране между двумя указанными точками.

Вдругими словами, там нет draw-line - это чисто гипотетически.

1 голос
/ 11 июля 2018

В этой части книги был действительный пакет Схемы MIT , составленный авторами книги для языка рисунков ( SICP, раздел 2.2.4 ).Тем не менее, пакет был написан в 1993 году, и мне не повезло заставить его работать на моей Mac OS High Sierra.Книга включает в себя все функции, в том числе Draw-Line, и вы действительно можете сделать фотографии и поиграть с ними.Скачайте ракетку и запустите следующее:

(require (planet "sicp.ss" ("soegaard" "sicp.plt" 2 1)))  

Для получения дополнительной информации см. руководство пользователя для этого потрясающего пакета .

0 голосов
/ 05 мая 2019

Следуя этой части книги, я решил draw-line сгенерировать код JavaScript, который будет рисоваться на холсте HTML.

(define (draw-line v1 v2)
  (newline)
  (display "ctx.beginPath();")
  (display (string-append "ctx.moveTo(" (number->string (xcor-vect v1)) "," (number->string (ycor-vect v1)) ");"))
  (display (string-append "ctx.lineTo(" (number->string (xcor-vect v2)) "," (number->string (ycor-vect v2)) ");"))
  (display "ctx.stroke();"))

В конце концов, как именно draw-line реализован, не важно для процедур, которые его используют, и нам просто нужен способ визуализации результатов.Единственным недостатком является то, что HTML-координаты холста начинаются в верхнем левом углу, а не в левом нижнем углу, но это также может быть решено путем корректировки немного генерируемого кода.

Вот полный код схемы https://github.com/antivanov/scip-exercises/blob/master/scheme/ch2/2.48.49.scm https://github.com/antivanov/scip-exercises/blob/master/scheme/ch2/2.52.scm

Следуя тому же подходу, я смог представить другие примеры / упражнения из этой главы.

0 голосов
/ 29 марта 2011

Я закончил это художественное задание для одного из моих классов. Для 2.47 вам не нужно беспокоиться о ничьей. Все, что вам нужно сделать, это сделать конструкторы и селекторы:

(define (make-frame origin edge1 edge2)
(list origin edge1 edge2))

(define (origin-frame frame)
(car frame))

(define (edge1-frame frame)
(cadr frame))

(define (edge2-frame frame)
(caddr frame))
0 голосов
/ 29 марта 2011

Я нашел этот раздел книги очень расстраивающим.Там нет ничьей.Просто если это так, то что делать.Ужасный способ научить программированию ИМО.Студент должен увидеть что-то конкретное в конце, которое либо бежит, либо нет.

...