sicp每日一题[2.49]

news/2024/10/19 12:51:21

Exercise 2.49

Use segments->painter to define the following primitive painters:

a. The painter that draws the outline of the designated frame.
b. The painter that draws an “X” by connecting opposite corners of the frame.
c. The painter that draws a diamond shape by connecting the midpoints of the sides of the frame.
d. The wave painter.


这道题目我本来感觉不是很难,我按照题目要求把 frame 的3个点坐标取出来,然后用 make-segment 连成线,但是做了半天总是不行,
上网搜了一下其他人的答案,发现他们都是直接传的 segment-list,而不是传 frame,而且之前定义的 make-vect, make-segment 也都用不了。。
必须先导入 sicp-pict,然后再用它自带的 vect 和 segment 来创建向量和线段。完整代码如下:

(#%require sicp-pict); a 
(define outline (segments->painter (list (segment (vect 0.0 0.0) (vect 0.0 1.0)) (segment (vect 0.0 0.0) (vect 1.0 0.0)) (segment (vect 0.0 1.0) (vect 1.0 1.0)) (segment (vect 1.0 0.0) (vect 1.0 1.0))))); b 
(define x-painter (segments->painter (list (segment (vect 0.0 0.0) (vect 1.0 1.0)) (segment (vect 0.0 1.0) (vect 1.0 0.0))))) ; c
(define diamond (segments->painter (list (segment (vect 0.0 0.5) (vect 0.5 1.0)) (segment (vect 0.5 1.0) (vect 1.0 0.5)) (segment (vect 1.0 0.5) (vect 0.5 0.0)) (segment (vect 0.5 0.0) (vect 0.0 0.5))))) ; d
(define wave (segments->painter (list (segment (vect .25 0) (vect .35 .5)) (segment (vect .35 .5) (vect .3 .6)) (segment (vect .3 .6) (vect .15 .4)) (segment (vect .15 .4) (vect 0 .65)) (segment (vect 0 .65) (vect 0 .85)) (segment (vect 0 .85) (vect .15 .6)) (segment (vect .15 .6) (vect .3 .65)) (segment (vect .3 .65) (vect .4 .65)) (segment (vect .4 .65) (vect .35 .85)) (segment (vect .35 .85) (vect .4 1)) (segment (vect .4 1) (vect .6 1)) (segment (vect .6 1) (vect .65 .85)) (segment (vect .65 .85) (vect .6 .65)) (segment (vect .6 .65) (vect .75 .65)) (segment (vect .75 .65) (vect 1 .35)) (segment (vect 1 .35) (vect 1 .15)) (segment (vect 1 .15) (vect .6 .45)) (segment (vect .6 .45) (vect .75 0)) (segment (vect .75 0) (vect .6 0)) (segment (vect .6 0) (vect .5 .3)) (segment (vect .5 .3) (vect .4 0)) (segment (vect .4 0) (vect .25 0)) )))(paint outline)
(paint x-painter)
(paint diamond)
(paint wave)

效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

数据采集与融合技术实验课程作业二

数据采集与融合技术实验课程作业二作业所属课程 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology作业链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13285gitee码云代码位置 https://gitee.com/wang-qi…

spark sql语句性能优化及执行计划

一、优化点:1、not in 替换为 not exist;2、in 替换为 right join;3、distinct 替换为 group by;4、count(distinct) 替换为 count;5、where条件中,等号左右两边的数据类型需要一致;6、where条件中,等号左边不要有函数;7、where条件上移;8、优化点需要对照执行计划,并…

GDPC-CSA::CTF一轮web题目write up-T2 ez http

首先来看题目先不鸟提示,进去页面逛逛,F12一下,看到如下内容回头来看提示,robots.txt是网页用来告知爬虫允许和禁止访问文件的君子协议,由题我们决定先打开/robots.txt查看一下爬虫被禁止访问哪些文件,其中说不定会有线索 如果对robots.txt还不了解的可以看看这里 在网站…

AIGC时代的语音笔记工具,创意人士的福音

国庆期间,我发现了一款特别好用的语音笔记工具,它应该算是AIGC时代的新一代笔记工具了。这个工具,是那些随时会有创意想法要记录,或者经常需要做会议纪要,读书笔记的人福音。 它有几个功能让我特别喜欢。第一个是语音笔记功能,这个不像科大讯飞的语音输入法,它不仅仅是简…

初探AI之got-ocr2.0大模型本地部署与遇到的各种坑处理

一、环境搭建 1.安装cuda,本人使用的是12.1版本,下载地址:https://developer.nvidia.com/cuda-12-1-1-download-archive2.安装conda3,https://blog.csdn.net/m0_73634846/article/details/136378350 3.准备代码环境 原文: https://mp.weixin.qq.com/s/PQVrlr5FoVb89Mivzi7p…

体脂率测试

代码展示 #include<stdio.h>int main() { float h,w,t; t=h/(w*w); if(t<18.5)cout<<"偏瘦”; else if(18.5<t<23.9)cout<<"正常"; else if(23.9<t<27.9)cout<<"偏胖"; else if(27.9<t<39.9)cout<…

使用Web组件加载页面

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs…