内容正文:
第五章 平面图形—多边形 第六节 映射
映射的概念:映射是一种通过指定表达式对一个或多个列表中的元素进行批量计算或操作,最终生成新列表的指令。简单来说,它让变量依次从对应列表中取值并代入表达式,将每次计算的结果整合为一个新的结果列表。
1.语句格式:中文格式:映射(<表达式>,<变量1>,<列表1>,<变量2>,<列表2>,…)
英文格式:Zip(<expression>,<variable1>,<list1>,<variable2>,<list2>,…)
示例1:构造如(图1)点列,要求:点间距离1,点的个数n,n为数字滑动条。
图1
语句:序列((x(A)+k,y(A)),k,0,n)。
由以上点列,应用映射指令,构造正方形列如(图2)。
图2
语句:映射(多边形((x(P),y(P)),(x(P)+1,y(P)),4),P,l1)。
示例2:由小正方形“堆积”生成“台阶”图形如(图3),根据所学的知识,构造二维正方形列。
图3
参考指令语句:序列(序列(多边形((x(B)+i,y(B)+j),(x(B)+i+1,y(B)+j),4),j,0,i),i,0,n)。
语句为双变量(i,j),i为水平“方块”数,j为竖直“方块”数,因此用双序列语句“包裹”。
说明:构造二维“对象”列的基本步骤:(1)确定核心语句;(2)构造二维“对象”列的单个对象;(3)将对象的坐标如(4,3)替换成变量如(i,j);(4)序列指令语句。
示例3:构建角度滑动条,构造如(图4)圆周点列。提示:在极坐标下,构造点(r;θ)。
图4 图5
参考语句:序列(C+(3;θ),θ,0,α,10°),研究一下,构造点语句C+(3;θ)的含义。
练习与思考
1.“谢尔宾斯基三角”如(图6)是学习ggb重要案例之一,它可以应用“迭代”和“映射”指令实现;
请按以下步骤学做“谢尔宾斯基三角”。
(1) 构造三角形语句:t1=多边形(A,B,C)(图7);
图6 图7 图8
(2) 构造3个三角形(图8)语句(列表):l1={多边形(顶点(t1,1),中点(顶点(t1,1),顶点(t1,2)),中点(顶点(t1,1),顶点(t1,3))),多边形(中点(顶点(t1,1),顶点(t1,2)),顶点(t1,2),中点(顶点(t1,2),顶点(t1,3))),多边形(中点(顶点(t1,1),顶点(t1,3)),中点(顶点(t1,2),顶点(t1,3)),顶点(t1,3))};
注:基本语句多边形(点,点,点)格式。三角形A点、B点、C点,又称顶点,构建三角形t1时,构建点顺序为ABC,故语句A点:顶点(t1,1);B点:顶点(t1,2);C点:顶点(t1,3),为什么不用ABC呢?迭代指令的关键步骤:“统一变量”。
观察列表l1,看起来很复杂,其实就是三角形3条边中点的构造,用三种颜色区分。
(3) 迭代+映射:迭代列表(映射({多边形(顶点(t,1),中点(顶点(t,1),顶点(t,2)),中点(顶点(t,1),顶点(t,3))),多边形(中点(顶点(t,1),顶点(t,2)),顶点(t,2),中点(顶点(t,2),顶点(t,3))),多边形(中点(顶点(t,1),顶点(t,3)),中点(顶点(t,2),顶点(t,3)),顶点(t,3))},t,扁平列表(p)),p,{{t1}},8);
注:映射指令体(蓝色)为迭代列表指令体的“表达式”,P为变量(所有三角形二维列),{{t1}}为初始三角形,8为迭代次数(用整数滑动条替换)。在迭代中,写表达式的时候应尽量保证初值、变量、迭代象三个量属性的统一,即点映射为点,线映射为线,多边形映射为多边形,列表映射为列表等等,如果以列表作为变量,还要考虑列表中元素的属性是否相同。
“扁平列表”(FlattenedList)的核心含义:多维列表(尤其是二维列表)转换为一维列表,即将嵌套结构“展开”为单层结构。例如:二维列表{{1,2},{3,4},{5,6}},扁平化为一维列表{1,2,3,4,5,6}.
{{t1}}为二维列表,映射指令体的“列表”必须是一维列表。
(4) 生成(图6)
189
学科网(北京)股份有限公司
$