【问题标题】:draw graphics with MIT scheme使用 MIT 方案绘制图形
【发布时间】:2012-11-01 01:46:27
【问题描述】:

我希望使用 MIT 方案以图形方式绘制函数。在scheme的手册中,有一段叫做“Graphics”——引用:

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

如果您遇到这种情况,请通过粘贴与 MIT/scheme 一起使用并绘制一些东西的最小工作代码(KISS 原则)来帮助我。

【问题讨论】:

    标签: scheme mit-scheme


    【解决方案1】:

    看起来this 手册包含每个单独函数的文档,但每个函数的完整示例似乎不存在于任何在线文档中。我能够找到工作代码的唯一方法是谷歌搜索实际的函数名称,并仔细检查每个结果以获取可能的代码示例。

    无论如何,为了满足您的问题并给您一个关于这个库如何工作的简单示例,这里是示例代码。

        (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])。它奏效了。好!
    • 我喜欢这个答案,但请注意,在 let 块中执行所有这些操作意味着您实际上不会看到打开、绘制和关闭的图形。我更喜欢 Alex Gian 的回答
    【解决方案2】:

    我想补充一点,seisvelas (1/11/12) 给出的代码虽然正确,但在我的 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 方案的目的不是开发强大的图形界面,而是尝试使用具有良好图形支持的 Racket 的 gui 库。对我来说,它适用于 64 位 thinkpad 上的 MIT 方案。
    • let 的范围在(graphics-close device) 之后结束,与图形的工作方式无关。
    • 这对我不起作用;我在 Debian buster 10 stable 上使用 mit-scheme 10.1.10,(enumerate-graphics-types) 返回()。
    【解决方案3】:

    Mac OSX 用户需要注意的一点是,您需要安装并启动 XQuartz,否则(enumerate-graphics-types) 将始终为空。

    【讨论】:

      【解决方案4】:

      我正在为 Windows 用户开发一个绘图实用程序 source

      它只是由 mit-scheme 中“图形”提供的原语构建而成,但允许您绘制函数和矢量场。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 2014-04-03
        • 2012-10-24
        • 1970-01-01
        相关资源
        最近更新 更多