使用MIT Scheme绘制图形

6

我希望使用MIT Scheme绘制函数图形。在Scheme手册中,有一个名为“图形”的部分,引用如下:

MIT Scheme has a simple two-dimensional line-graphics interface that is 
suitable for many graphics application.

如果您有过类似经历,请帮忙粘贴一份在MIT/scheme中能够绘制图形的最小工作代码(KISS原则)。

4个回答

6
看起来这个手册包含了每个单独函数的文档,但是在线文档中似乎没有每个函数的完整示例。我能找到代码样本的唯一方法是通过谷歌实际函数名并费力地查看每个结果是否有代码示例。
无论如何,为了回答你的问题并给出该库如何工作的简单示例,下面是代码示例。
    (let ((device (make-graphics-device (car (enumerate-graphics-types))))
          (x-start 0)
          (y-start 0)
          (x-end 5)
          (y-end 5))
      (graphics-draw-line device x-start y-start x-end y-end)
      (graphics-close device))

如果您需要更多的样例,请告诉我,但是代码和文档应该足以帮助您开始。

谢谢!(enumerate-graphics-types) 为我返回了 (#[graphics-type 14 x])。而且它运行正常。太好了! - alinsoar
我喜欢这个答案,但请注意,在let块中执行所有操作意味着你实际上看不到图形的打开、绘制和关闭。我更喜欢Alex Gian的答案。 - Goodword

6
我想补充一下,1/11/12 seisvelas提供的代码虽然是正确的,但在我的64位Linux系统上无法运行。
(以下内容是根据alinsoar的观察进行编辑) 这是因为窗口在let的作用域内被关闭,所以它实际上是有效的,但速度太快而无法观察到。
请尝试这样做:
(define device (make-graphics-device (car (enumerate-graphics-types))))
(graphics-draw-line device 0 0 5 5)
;; when you're good and ready
(graphics-close device)

图形设备的代码是硬件相关的,所以不能期望它在所有计算机上都能工作。虽然 MIT Scheme 的目的不是开发强大的图形界面,但可以尝试使用 Racket 的 GUI 库,该库拥有良好的图形支持。在我的 ThinkPad 64 位 MIT-Scheme 上,这对我很有效。 - alinsoar
使用let定义的作用域在(graphics-close device)之后结束,与图形工作方式无关。 - alinsoar
这对我不起作用;我正在使用Debian buster 10稳定版上的mit-scheme 10.1.10,(enumerate-graphics-types)返回() - xdavidliu

3

需要注意的一点是,如果你使用的是Mac OSX系统,你需要安装和启动XQuartz或者(enumerate-graphics-types)始终为空。


1
我正在为Windows用户开发一个绘图工具源代码
它仅使用MIT-Scheme中提供的基本图形构建,但允许您绘制函数和矢量场。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接