SICP_2.48-2.49

 1 #lang sicp
 2
 3 (#%require sicp-pict)
 4
 5 (define (make-vect a b)
 6   (cons a b))
 7
 8 (define (xcor-vect v)
 9   (car v))
10
11 (define (ycor-vect v)
12   (cdr v))
13
14 (define (add-vect v1 v2)
15   (make-vect (+ (xcor-vect v1)
16                 (xcor-vect v2))
17              (+ (ycor-vect v1)
18                 (ycor-vect v2))))
19
20 (define (sub-vect v1 v2)
21   (make-vect (- (xcor-vect v1)
22                 (xcor-vect v2))
23              (- (ycor-vect v1)
24                 (ycor-vect v2))))
25
26 (define (scale-vect s v1)
27   (make-vect (* s (xcor-vect v1))
28              (* s (ycor-vect v1))))
29
30 ;;;;;;;;;;;;;;;;;;;2.48
31 (define (make-segment start end)
32   (make-vect start end))
33
34 (define (start-segment segment)
35   (car segment))
36
37 (define (end-segment segment)
38   (cdr segment))
39
40 ;;;;;;;;;;;;;;;;;;;2.49
41 (define (segment->painter segment-list)
42   (lambda (frame)
43     (for-each
44      (lambda (segment)
45        (draw-line
46         ((frame-coord-map frame) (start-segment segment))
47         ((frame-coord-map frame) (end-segment segmnet))))
48      segment-list)))
49
50
51 (define segment-list1 (list
52                        (make-segment (make-vect (cons 0 0)
53                                                 (cons 0 0))
54                                      (make-vect (cons 0 0)
55                                                 (cons 1 0)))
56                        (make-segment (make-vect (cons 0 0)
57                                                 (cons 1 0))
58                                      (make-vect (cons 0 0)
59                                                 (cons 1 1)))
60                        (make-segment (make-vect (cons 0 0)
61                                                 (cons 1 1))
62                                      (make-vect (cons 0 0)
63                                                 (cons 0 1)))
64                        (make-segment (make-vect (cons 0 0)
65                                                 (cons 0 1))
66                                      (make-vect (cons 0 0)
67                                                 (cons 0 0)))))
68
69 (define segment-list2 (list
70                        (make-segment (make-vect (cons 0 0)
71                                                 (cons 0 0))
72                                      (make-vect (cons 0 0)
73                                                 (cons 1 1)))
74                        (make-segment (make-vect (cons 0 0)
75                                                 (cons 1 0))
76                                      (make-vect (cons 0 0)
77                                                 (cons 0 1)))))
78
79 (define segment-list3 (list
80                         (make-segment (make-vect (cons 0 0)
81                                                  (cons (/ 1 2) 0))
82                                       (make-vect (cons 0 0)
83                                                  (cons 1 (/ 1 2))))
84                         (make-segment (make-vect (cons 0 0)
85                                                  (cons 1 (/ 1 2)))
86                                       (make-vect (cons 0 0)
87                                                  (cons (/ 1 2) 1)))
88                         (make-segment (make-vect (cons 0 0)
89                                                  (cons (/ 1 2) 1))
90                                       (make-vect (cons 0 0)
91                                                  (cons 0 (/ 1 2))))
92                         (make-segment (make-vect (cons 0 0)
93                                                  (cons 0 (/ 1 2)))
94                                       (make-vect (cons 0 0)
95                                                  (cons (/ 1 2) 0)))))
96 ;;;wave 略
时间: 2024-11-04 00:47:15

SICP_2.48-2.49的相关文章

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

【STM32H7教程】第49章 STM32H7的FMC总线应用之SDRAM

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第49章       STM32H7的FMC总线应用之SDRAM 本章教程为大家讲解SDRAM的驱动实现,后面LCD的显存和大数量的存取都要用到. 49.1 初学者重要提示 49.2 SDRAM硬件设计 49.3 SDRAM驱动设计 49.4 SDRAM板级支持包(bsp_fmc_sdram.c) 49.5 SDRAM驱动移植和使用 49.6 实验例程设计框架 49.

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABLE 2 ( 3 gid NUMBER not null, 4 gname VARCHAR2(90), 5 gdetails CLOB, 6 gpicture VARCHAR2(100), 7 gprice NUMBER, 8 gleixing NUMBER, 9 gpinpai VARCHAR2(20) 10 ) 11 tablespace

*C#(WPF)--矩阵拖动和矩阵动画(拖动展开,不足动画效果)

最近在研发新的项目,遇到了一个桌面模式下的难点--展开动画.之前动画这方面没做过,也许很多人开始做的时候也会遇到相关问题,因此我把几个重点及实际效果图总结展示出来: 我的开发环境是在VS2017下进行的,这个工具条主要功能是:一个工具条,可进行拖拉.可进行拖拉展开,可在拖动之后不足展开并反向继续展开剩下的部分: 一.[拖动]   拖动的核心代码是通过矩阵进行定位和拖动的,定位是以父容器为模板的.以下是核心代码(及效果图): 1 /// <summary> 2 /// 这里TitleBar代指最

Java设计模式学习笔记,三:建造者模式

建造者模式:实现了构建和装配的解耦,即对象的各个子组件单独构建,再进行装配,从而建造完整对象. 该模式适用于构建较为复杂的对象(多个子组件). 不同的构建者,使用相同的装配者,可以建造不同的对象实例.相同的构建者,不同的装配顺序,也可能建造出不同的对象实例. 举例: 汽车对象,子组件包括引擎.轮子和车体. Audi汽车构建者,负责制造Audi牌各个子组件.BMW汽车构建者,负责制造BMW牌各个子组件.然后将子组件统一送至汽车装配者的生产线中进行组装,最后会建造出Audi牌汽车和BMW汽车. 以下

私人订制——属于你自己的Linux

一.前言 Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为我们后来人提供了一个良好的学习和研究环境. 本文主要通过裁剪现有Linux系统,根据自己的需要,打造一个属于自己的Linux小系统,让其能够具备Linux的一些常用小功能. 二.原理 启动流程介绍: 制作Linux小系统之前,我们有必要再了解一下Linux的启动流程: 1.首先Linux要通过POST自

rbac 权限控制

RBAC 的控制,大致是通过将角色的权限控制,来控制用户的权限. 需要构建的表为 用户表(user) ,角色表(role),节点表(node),三张主表 , 节点表内记录的是所有的权限和方法. 2张关联表,是为了关联3张数据表的,分别未 角色用户表(user_role),角色权限表(role_node),也可将两张表写成字段分别加入到用户表和权限表内; 废话不多说看下,键表语句如下 用户表: CREATE TABLE `wj_admin` ( `id` int(11) NOT NULL AUTO

STM32F4XX高效驱动篇1-UART

之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下.并奉驱动程序,本程序覆盖uart1-8. 串口驱动,这是在每个单片机中可以说是必备接口.可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口.这样一个高效的驱动是决定您产品优劣的关键因素.本文主要针对STM32F4XX系列芯片做的一个驱动接口层.以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的. 从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大

数据字典实现缓存

数据字典的好处很多比如: 1.可以减少使用表,来专门记录类型. 2.类型使用key检索,或者报表统计分析,在一定程度上相比汉字来讲,效率好得多. 3.使用缓存的数据字典.也可以减少不少的io操作. 等等.... 首先,库表设计就智者见智了.不多说.爱怎么设计就怎么设计. 完整的数据字典设计 ,需要 1.生成select 自定义标签. 2.list页面,或者get页面, 一个key转 value的标签 使用自定义标签,搭配上缓存的数据字典是最方便.最完美的解决办法, 接下来,就直接贴代码了. 一.