二讲基本绘图命令
第二讲 Flash绘图工具与图形处理
图1 贝赛尔绘图方式之二
图2绘图步骤二
图3 绘制完的曲线
20
例:绘制波浪线
显示网格 绘制波浪线
21
用钢笔工具画直线
a. 选取钢笔工具 b. 在钢笔工具的属性面板里设定其参数,见图
c.在工作舞台上你选取画线的位置点击一下,确定了线段的 第一个点。 d.点击线段的另一个节点,如果按住Shift键,可以强制画 45度或90度的线。 e.结束画线:双击最后一个节点或者是画的封闭的图形也 可以自行结束。
55
单击【填充样式】右侧的下拉按钮,将弹出如图所示 的下拉列表框,其中列出了5种填充样式,可以根据需 要选择合适的填充样式。
56
颜色选择按钮
取消填充色
使填充色和线条色互换
57
颜色选择
(1)颜色样本按钮 弹出颜色样本下拉面板 (2)窗口 颜色样本 或Ctrl+F9 打开颜色样本窗口
(3)线性,放射状填充选择:
16
可以选择以何种方式为图形着色:
标准绘画:刷子所过之处将会覆盖同一图层 中所有的线条和填充色。 颜料填充:在空白区域和图形内部着色,而 保留轮廓线及其他线条不被覆盖。 后面绘画:只能为空白区域着色,线条、轮 廓线及封闭的图形内部将保留原 状态不变。 颜料选择:只能喷涂所选定的填色区域。 可以用选择工具选定一块区域填充。 内部绘画:在笔刷起始点所处区域内部填充 且不会影响到线条,也永远不会影响 到线条以外的部分。如果笔刷起始位 置位于空白区域,则现有的线条和图 形区域将不会受到影响。
33
4.编辑修改图形: 这也是箭头工具常用的操作. 例如一条直线,想使其弯曲,将箭头放到直线的下面,可 以看到在箭头旁边多出一个小弧形的标记,这意味着 你可以改变这条直线.如图所示
AUTO CAD 2007教程2
图3.2.2 快捷菜单
注意:用直线命令绘制的直线在默认状态下是没有宽度 的,但可以通过不同的图层定义直线的线宽和颜色,在打印 输出时,可以打印出粗细不同的直线。
二、绘制圆 圆是工程制图中另一种常见的基本实体。在AutoCAD 2007中提供了6种绘制圆的方法。 启动圆命令有如下3种方法: (1)菜单栏:选择“绘图”→“圆”菜单下的子命令。 (2)工具栏:单击“绘图”工具栏中的“圆”按钮。 (3)命令行:在命令行输入CIRCLE。
2.选项含义 (1)指定第一点:通过键盘输入或鼠标确定直线的起点 位置。 (2)闭合(C):用于将最后一个端点与第一条线段的起点 重合形成封闭图形。 (3)放弃(U):取消上一步绘制的线段。 在AutoCAD 2007中,当命令操作有多个选项时,单击鼠 标右键将弹出类似于如图3.2.2所示的快捷菜单,虽然命令选项 会因命令的不同而不同,但基本选项大同小异。
图3.1.1 选择对象以虚线形式呈高亮度显示
二、窗口选择方式 窗口选择方式是在“选择对象:”提示下指定两个角点即 可定义某区域。角点指定的次序不同,选择的结果也不同,指 定了第一个角点以后,从左向右拖动(选择窗口)仅选择完全 包含在选择区域内的对象;从右向左拖动(交叉选择)可选择 包含在选择区域内以及与选择区域的边框相交叉的对象。对象 至少有一部分是可见的,否则不能被选中,如图3.1.2所示。
图3.2.9 绘制圆弧
2.选项含义 选择“绘图”→“圆弧”命令,系统弹出如图3.2.10所示 的子菜单,该菜单提供了11种方法绘制圆弧,下面分别进行介 绍。 (1)“三点”命令:该命令是通过3个指定点来绘制圆弧, 第一个点是起始点,第三个点是终点,第二点是圆弧上任意一 点,这是系统默认绘制圆弧的方式(见图3.2.9)。
第二讲绘图方法及简化命令强化(二)
一、启动及界面说明
【菜单】[Tools]→[AutoCAD DesignCenter] 【工具栏】 Standard工具栏 → 【命令行】adcenter
二、使用AutoCAD设计中心
使用AutoCAD设计中心通常用两种方法:“左键拖放”
或“右键快捷菜单”。 AutoCAD设计中心的使用基本上都是针对Palette(控制板) 的,所以在进行某一操作时,应首先将操作的对象显示 在Palette中。 1、打开图形文件 2、插入块 3、复制图层等
四、块分解与重定义
在使用块时,有时需要对已经插入的块作一些修改, 或者需要将图形中同一种图块作统一修改。这时都 需要将组合在一起的对象再分开,若对图块作统一 修改还需要把分开的对象再组合起来。下面介绍这 两种操作:块分解与重定义
1、块分解——Explode命令 【功能】将组合对象分解为单个对象。 【菜单】[Modify]→[Explode] 【工具栏】 Modify工具栏 → 【命令行】explode
使用“Attribute Definition”对话框创建属性定义的设置内容 如下: (1)在Tag框中输入属性标签; (2)在Prompt框中输入属性提示; (3)在Value框中输入属性的缺省值; (4)指定属性文字的Justification(对正方式); (5)指定属性文字的Text style(文字样式); (6)指定属性文字的Height(高度); (7)单击按钮,在绘图区中指定属性文本的定位点;
2、重定义 块的重定义是使用块定义的BLOCK命令实现的,在 定义块时选择需要重定义块的名称、选择组成块的 新对象、插入基点,从而重定义命名块。在重定义 块的同时,图形中所有对该块的引用也立即随之更 新,即实现了对图块的统一修改。
2让小海龟画图
《第二课基本绘图命令(二)》教学设计勃利县长兴乡中心小学王志刚一、教材分析:本节课选自龙江版信息技术教材第七册第二课《基本绘图命令》,这册教材是以LOGO语言为主要内容,培养学生的初步编程能力,教材以例题的形式,采用小课题、小步子、任务驱动的教学方式,与其他学科进行整合,通过“做一做、想一想、练一练”等方法来启发学生思维,扩展学生的知识面,是适合六年级学生学习需要的、符合教学规律的一本好教材。
二、学生分析本课在这册书来讲属于初级阶段内容,对六年级学生来说是简单的思考过程,能够根据教师的引导,使自身的逻辑思维能力得到开发,为他们今后的学习打下基础。
这节课教师通过让学生自主学习,主动探究所需要认识的知识,利用电教手段直观地展示给学生,让学生在想一想,试一试中获得经验,再发散思维,最终掌握需要掌握的内容,对学生来说既掌握知识,又开发了智力。
三、三维目标:(1)知识目标:认知、熟悉LOGO最常用命令:[ 前进、后退、左转、右转、显龟、隐龟、清屏](2)技能目标:通过学习,让学生掌握LOGO常用命令的使用方法,并能用学习的命令绘制简单的图形。
(3)情感目标:通过学习,培养学生的逻辑思维方式和创新能力,进一步激发学生学习LOGO语言的热情。
四、教学重点:1、通过直观的演示,使学生理解、掌握LOGO语言中最常用命令的使用。
2、让学生学会用LOGO语言绘制简单图形,并能展示自己的学习的成果。
五、教学难点:1、LOGO语言命令的运用;2、逻辑思维方式的培养。
六、教学准备:微机室、多媒体设备、自制的CAI课件。
七、教学课时:1课时八、教学过程:、师生交流、小结:本节课学生通过探究与实践最终要掌握LOGO语言绘图的基本命令,通过练习使他们能够养成发现问题、分析问题、解决问题的习惯,主动学习,合作学习,善于总结,善于实践,不断的扩大自己的知识面,对知识具有初步的逻辑性、条理性的分析,并最终得到收获成功的喜悦,培养学生对LOGO语言的兴趣。
《AutoCAD教案》
《AutoCAD教案》word版第一章:AutoCAD软件概述1.1 教学目标让学生了解AutoCAD软件的基本功能和应用领域。
让学生熟悉AutoCAD软件的界面和操作方式。
1.2 教学内容AutoCAD软件的简介和发展历程。
AutoCAD软件的主要功能和应用领域。
AutoCAD软件的界面和操作方式。
1.3 教学步骤介绍AutoCAD软件的简介和发展历程。
演示AutoCAD软件的界面和操作方式。
让学生进行AutoCAD软件的基本操作练习。
1.4 练习题简述AutoCAD软件的简介和发展历程。
描述AutoCAD软件的界面和操作方式。
第二章:基本绘图命令2.1 教学目标让学生掌握AutoCAD软件的基本绘图命令。
2.2 教学内容常用的绘图命令及其功能。
2.3 教学步骤讲解常用的绘图命令及其功能。
演示绘图命令的使用方法。
让学生进行绘图命令的练习。
2.4 练习题列出常用的绘图命令及其功能。
使用绘图命令绘制简单的图形。
第三章:基本编辑命令3.1 教学目标让学生掌握AutoCAD软件的基本编辑命令。
3.2 教学内容常用的编辑命令及其功能。
3.3 教学步骤讲解常用的编辑命令及其功能。
演示编辑命令的使用方法。
让学生进行编辑命令的练习。
3.4 练习题列出常用的编辑命令及其功能。
使用编辑命令修改图形。
第四章:尺寸标注4.1 教学目标让学生掌握AutoCAD软件的尺寸标注功能。
4.2 教学内容尺寸标注的基本概念和命令。
4.3 教学步骤讲解尺寸标注的基本概念和命令。
演示尺寸标注的使用方法。
让学生进行尺寸标注的练习。
4.4 练习题描述尺寸标注的基本概念和命令。
使用尺寸标注功能标注图形。
第五章:图层管理5.1 教学目标让学生掌握AutoCAD软件的图层管理功能。
5.2 教学内容图层的基本概念和命令。
5.3 教学步骤讲解图层的基本概念和命令。
演示图层管理的使用方法。
让学生进行图层管理的练习。
5.4 练习题描述图层的基本概念和命令。
第二讲corx4基本操作一
第二讲corx4基本操作4——设计工具选项
(3)设计标尺 工具→选项→标尺
第二讲corx4基本操作4——设计工具选项
2.
第二讲corx4基本操作4——设计工具选项
2.
第二讲corx4基本操作3——页面设计
• 3.页面设计:方法:在属性栏中单击“横向”、“纵向”,如图3-1所示。 • 纸张的宽长和高长:
•
图2-1属性栏显示纵向、横向按钮和高长及宽长
• 4.设计多页文档(插入页面)
• 在页面左下方的标签栏上,单击 按钮,可以在前页插入一个新的页面,单击右边 的标签栏上,单击 按钮,可以在当前页面之后插入一个新的页面,如图2-3所示
要在CorX4中新建- - 个图形文件,可以通过以下几种操作方法来完成。
★启动CorelDRAWX4并进人欢迎界面后,单击“新建空白文档” 选项,如图2-1所 示,即可按默认设置,生成一个纵向的A4 (即210x297 毫米)大小的图形文件。 • 在CoreIDRAW中执行“文件一 新建”命令,或者按下“Ctrl+N” 快捷键,或者单击属性栏中的新建” 按 钮口,也可快速新建一个空白图形文件。
第二讲corx4基本操作1——新建文件
• 如图2-1 •
如图2-2
第二讲corx4基本操作1——新建文件
第二讲 MATLAB 绘图
绘制y=1-exp(0.3*t).*cos(0.7*t)
t=6*pi*(0:100)/100; y=1-exp(-0.3*t).*cos(0.7*t); tt=t(find(abs(y-1)>0.05)); ts=max(tt); plot(t,y,'r-'); grid on; axis([0,6*pi,0.6,max(y)]); title('y=1-exp(-\alpha*t)*cos(\omega*t)'); hold on; plot(ts,0.95,'bo'); hold off; set(gca,'xtick',[2*pi,4*pi,6*pi],'ytick',[0.95,1,1.05,max(y)]); grid on;
绘制曲线
x t cos(3t ) , t 2 y t sin t
t = -pi:pi/100:pi; x = t.*cos(3*t); y = t.*sin(t).^2; plot(x,y)
2015-5-14 10
图形标识
图形标识包括:
图名(title) 坐标轴名(xlabel、ylabel) 图形文本注释(text) 图例(legend)
2015-5-14 22
双纵坐标:plotyy指令
plotyy指令调用格式:
plotyy(x1, y1, x2, y2)
x1-y1曲线y轴在左, x2-y2曲线y轴在右。
例3.7:
x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); plotyy(x,y1,x,y2);
logo语言教程第一章
第二节基本绘图命令LOGO语言是一种很简单的绘图方法,它有一些简单的绘图命令,当你从键盘上敲入一条命令并按下回车键后,计算机立即在屏幕上画出相应的图形。
(1)认识“小海龟”进入LOGO系统后,我们在屏幕上可以看到一个栩栩如生的小海龟图形。
这就是LOGO语言中的“小海龟”,屏幕中央叫做海龟的“家”,也叫做海龟的母位。
注意海龟头的指向,它表示海龟行动的方向(现在海龟的方向是向上的)。
LOGO语言可以指挥海龟在屏幕上“爬行”;用它留下的痕迹组成丰富多彩的图形来。
注意,我们只要指挥海龟按一定的路线运动就可以绘出所需的图形,要海龟听话,必须掌握好海龟绘图时的状态。
即海龟头的方向与它在屏幕上的位置等。
(2)基本绘图命令1.初始化命令DRAW格式:DRAW功能:清除屏幕,显示小海龟,海龟回母位(即屏幕的中央,且小海龟头朝上)。
2.前进命令FORWARD简写FD使用格式:FD (前进步数)功能:海龟向前前进了80步,但海龟头方向不变。
注意:FD 与数字之间一定要有空格。
LOGO系统中命令与命令、命令与数字间都要有空格。
LOGO系统中命令与命令、命令与数字之间都要有空格。
3.后退命令BACK 简写BK使用格式:BK (后退步数)功能:海龟向后退若干步例如:BK 80执行后海龟向后退若干步4.向右转命令RIGHT 简写RT使用格式:RT (角度值)功能:海龟头向右转了一个角度,规定所有顺时针方向转的都叫做都叫做右转。
例如:RT 90海龟头向右转了90度,即海龟头如原来是向上的现转为向右。
海龟位置不动。
5.向左转命令LEFT 简写LT使用格式:LT (角度值)功能:海龟头向左转了一个角度,并规定所有逆时针方向转的都叫做左转。
例如:LT 90海龟头向左转了90度,即海龟头如原来是向上的现转为向左。
海龟位置不动。
利用上述各项命令可以画一些简单的图形了。
特别注意:在FD后面的数值如果是负数,则海龟后退若干步。
在BK后面的数值如果是负数,则海龟前进若干不步。
第2章 AutoCAD基本绘图命令
本章主要内容: 1.绘制圆弧 2.绘制矩形 3.绘制正多边形 4.绘制椭圆 5.绘制点 6.绘制构造线
一、画圆弧命令
CAD提供了11种方式画圆弧,快捷键A
说明: 1.默认情况为逆时针画弧 2.角度为负时顺时针画弧
3.半径、弦长为负时画
大于半圆的弧
一、画圆弧命令
例:绘制下列圆弧及图形
三、 画正多边形
例:绘制下列正多边形及图形
三、 画正多边形
绘制底边非水平的正多边形 用相对坐标法(内接于圆、外切于圆) ,提
示指定半径时,目标点始终指向接点或切点。
底边非水平多边形
四、画椭圆
常用3种方式画椭圆,快捷键 EL 1.轴端点方式(长轴、短轴四个点中的
三个点)
2.椭圆心和两轴的各一端点 3.一条轴和绕轴转角 注:椭圆命令可画椭圆弧
二、画矩形
快捷键 rec 1.缺省方式画矩形 2. 画有倒角的矩形 3.画有圆角的矩形 4.用矩形命令画腰形槽 矩形圆角半径等于腰形槽圆角半径
二、画矩形
1.缺省方式画矩形
三、 画正多边形
可画3~1024边的正多边形,有三种方 式,快捷键为 POL。 1.边长方式 2.内接于圆方式(I) 习6个绘图命令,重点是: 1.绘制圆弧及应用 共有11种方式画圆弧 2.绘制矩形,用矩形命令画腰形槽 3.绘制正多边形 有3种方式
4.绘制构造线及应用
上机练习: 绘制习题集图形(共8题) P4—(2)(3) P5—(4) P6—(2)(3) P7—(1)(3) P9—(2)
四、画椭圆
例:绘制椭圆及图形
旋转
五、画点
有画“单点”和“多点”两种,默认为 “多点”,快捷键 PO 说明: 1.先用“格式\点样式”设置点样式 2.用点作“定数等分”或“定距等到分” 3.画“多点”时按Esc键退出
Stata_画图专题(2):基础绘图命令
1.2 scatter:散点图
命令格式
[
]
[ ][ ][
][
]
twoway scatter varlist if in weight , options
[
][
]
scatter varlist || lfit varlist || line varlist
其中下划线、方括号的含义与前面相同,不赘述。此处 varlist 是变量列表,一般二维的散点图 就是两个变量;[options] 是可选参数,参数很多,请 help scatter 来查看。常用的有 “连线” connect(l) 和 “去散点” msymbol(i),在下面的结果中可以看到。在第二行的命令中给出了散 点图的用途 —“构造回归曲线” lfit。第二行命令的意思是(1)画出散点图,(2)拟合回归直 线并(3)按点的先后顺序连接起来。上述三个可以组合起来使用。
• “堆叠”,即表示多个柱状图叠在一起(看累计总值及每组占比),命令是 stack。
其余的选项请 help graph bar 来查看。上述两行命令区别是第二行命令只是水平 (horizontal) 形式的条形图。
表 3: 描述统计命令 命令 含义
mean median
p1 p50 p99
sd sum count max/min first/last
string functions
programming functions
datetime_functions time-series functions
matrix functions
三角函数、取整、对/指数、最值等 伯努利、卡方、正态、几何分布等 符合某一概率分布的随机数组 字符串拼接、提取、长度及 ASCII 码等 e/r/s 型返回值及其他编程方面的函数 对于日期/时间数据的转化、提取等
Asymptote绘图第二章2D绘图
第二章2D绘图2.1基本的绘图命令Asymptote的绘图基于draw,fill,clip以及label四个原始的命令.前三个根源于PostScript 的绘图命令,最后一个用于在图形上添加字母和图形,此处即调用了L A T E X的功能.举一个综合的例子.size(200,200);draw(unitcircle);fill(unitcircle,yellow);label("$O$",(0,0));•每一个完整的命令语句以;结尾.•其中size(200,200);可以理解为我们输出图形大小是200×200的图形.可以省略为size(200) ;.•unitcircle是Asymptote预定义的路径,表示半径为1的圆.现在调用draw命令画出.•同理,其后的一句是在封闭的路径中填上黄色.•最后一句是在坐标为(0,0)处标上字母O,其中引号内的$O$被会输送到一个T E X文件中生成相应的字母,然后再标在(0,0)位置.我们先试试一些简单的绘图例子,等对asy语言有一定了解以后才开始学习它的语法.12第二章2D绘图2.2画线段和点size(200);pair A=(0,0),B=(1,0),C=(0,1);draw(A--B--C);dot(A);dot(B,UnFill);dot(C);•pair用来声明一种称为二元组的数据类型,表示平面坐标.现在对A,B,C同时声明,用了逗号连接(称为逗号运算符).•--表示用直线连接两点.•dot用于画出一个实心点,其后加上UnFill就得到空心的点.这个UnFill真正的把点挖空,而不是用白色填充,这是Asymptote提供的重要功能之一.2.3画虚线size(200);pair A=(0,0),B=(1,0),C=(1,1),D=(0,1);draw(A--B,solid);draw(B--C,dashed);draw(C--D,dashdotted);draw(D--A,dotted);2.4画箭头3•其中solid可以省略,表示画实线;•dashed画虚线.•dashdotted画点划线.•dotted画实心点线.更多线的类型将在后面阐述.2.4画箭头size(200,0);draw((0,3)--(2,3),Arrow);draw((0,2)--(2,2),EndArrow);draw((0,1)--(2,1),BeginArrow);draw((0,0)--(2,0),Arrows);draw((0,-1)--(2,-1),MidArrow);•Arrow与EndArrow效果一样,都是在路径的末端添加箭头.•BeginArrow在路径的开头加箭头.•Arrows在路径的头尾都加上箭头.•MidArrow则是在路径的中间添加箭头.Arrow其实是一个函数,我们可以带上一些参数控制它的大小,形状以及安放的位置,这些在后面再详细论述.Asymptote预先定义了一些表示方向的二元组,比如E=(1,0),S=(0,-1),W=(-1,0),N=(0,1)以及它们的复合NE等等.因为二元组同时也表示平面坐标系中的点,因此,这些方向同时也表示点.举一个综合一点的例子,4第二章2D绘图ENW size (200);pair O=(0,0);draw (O--E ,Arrow );draw (O--NE ,Arrow );draw (O--N ,Arrow );draw (O--NW ,Arrow );draw (O--W ,Arrow );draw (O--SW ,Arrow );draw (O--S ,Arrow );draw (O--SE ,Arrow );label ("$E $",E ,E );label ("$N $",N ,N );label ("$W $",W ,W );label ("$S $",S ,S );label ("$NE $",position =NE ,align =NE );其中label 是Asymptote 里面的一个函数,用于标字母或图形,可以事先指定标的位置(position )以及相对与那个位置的放法(align ),因此,该函数的调用格式之一是:label(Label,position,align);如最后一行我们把NE 这个Label 标在position =NE 这个点的东北(align =NE ).从刚才那个例子,我们可以初步了解到Asymptote 中的函数都可以加上一些数据,我们把这些数据称为该函数的参数.另外,函数也可以复合.比如我们可以让draw 和Label 函数复合,以便同时画方向以及在其实标字母.2.5画线段按比例的分点5ENWWWsize(200);pair O=(0,0);draw(Label("$E$",1),O--E,Arrow);draw(Label("$N$",1),O--N,Arrow);draw(Label("$W$",1),O--W,Arrow);draw(Label("$S$",1),O--S,Arrow);draw(Label("$NE$",1),O--NE,Arrow);draw(Label("$NW$",1),O--NW,Arrow);draw(Label("$SE$",1),O--SE,Arrow);draw(Label("$SW$",1),O--SW,Arrow);draw(Label("$NNE$",1),O--NNE,Arrow);draw(Label("$NNW$",1),O--NNW,Arrow);draw(Label("$SSE$",1),O--SSE,Arrow);draw(Label("$SSW$",1),O--SSW,Arrow);draw(Label("$ENE$",1),O--ENE,Arrow);draw(Label("$ESE$",1),O--ESE,Arrow);draw(Label("$WNW$",1),O--WNW,Arrow);draw(Label("$WSW$",1),O--WSW,Arrow);draw(Label("$WNW$",position=1,red),O--WNW,Arrow);当然,更为重要的时,我们可以同时控制Label与draw的关系,从而达到把Label标在我们希望的位置.特别的,看最后一行,position=1表明我们把Label标在路径O--WNW的末端(即相对于整条路径比例为1的位置).2.5画线段按比例的分点对两个点A和B构成的线段(我们后面称为path的数据类型),我们可以用midpoint函数来求它们的中点.调用格式是:midpoint(path)6第二章2D绘图size(200);pair A,B,C;A=(0,0);B=(4,0);C=(1,2);pair D,E,F;D=midpoint(A--B);E=midpoint(B--C);F=midpoint(C--A);draw(A--B--C--cycle);filldraw(D--E--F--cycle,red);其中--cycle表示我们用--这种连接方式使得所画的路径是封闭而且是周期循环的.特别要注意的是:A--B--C--cycle与A--B--C--A是不一样的.后者并不形成一个封闭路径,它只是一条首尾巧好是同一个点的路径.因此,也只有前者才可以在有它围成的封闭区域填上颜色.那个filldraw就是把路径填上颜色的同时把该路径围成的封闭区域也填上颜色.这两个颜色可以不一样.size(200);filldraw((0,0)--(0,2cm)--(2cm,0)--cycle,fillpen=yellow,drawpen=red);一般的,我们用T interp(T a,T b,real t)表示a+t*(b-a),即从a往b方向走到占整段比例为t的地方,于是当比例t=1/2是就是中点.另外,T可以代任意有加减乘运算的一些诸如real,pair 等的数据类型.2.6画过若干个点的曲线7size (200);pair A,B,C,D;A=(0,0);B=(1,0);C=(1,1);D=(0,1);real t=1/5;pair X =interp (A,B,t);pair Y =interp (B,C,t);pair Z =interp (C,D,t);pair W =interp (D,A,t);draw (A--B--C--D--cycle );draw (X --Y --Z --W --cycle ,red );arrow ("$t=\frac{1}{5}$",X ,SE );2.6画过若干个点的曲线用..表示这种与直线不一样的连接两个点方式.这种画曲线原理将在后面讲到.现在我们可以利用四个点E ,N ,W ,S 来画出一个与圆非常接近的图形.ENW Ssize (200);draw (E ..N ..W ..S ..cycle );dot ("$E $",E ,E );dot ("$N $",N ,N );dot ("$W $",W ,W );dot ("$S $",S ,S );下面我们利用曲线功能画一些有趣一点的图形.8第二章2D绘图size(200);draw((0,0)--(2.5,2.5),linewidth(1),Arrow);filldraw((0,1)..(1,2)..(2,0)..(1,-2)..(0,-3)..(0,-3)..(-1,-2)..(-2,0)..(-1,2)..(0,1)..cycle,pink,red+linewidth(3));draw((-3,-3)--(0,0),linewidth(1));2.7变量与函数我们在前面其实已经接触到变量和函数这两个概念,在这里阐述一下.Asymptote中的变量就是在使用之前要预先定义好的数据类型.比如前面的表示方向的E,N,W,S以及各种颜色red,green等等.用户也可以自定义一些变量,但一定要事先声明它的数据类型.这种语法与C++/Java是类似的(但本书不假定读者学过任何语言).至于函数,在Asymptote中也把它看成变量,我们说它是一种一阶变量,于是普通的变量就可以看成零阶变量,两个函数复合就是更高阶的变量.这是Asymptote语言最为独特的一点,也使得我们在函数中调用或定义函数非常方便.Asymptote预先定义了很多画基本图形的函数,可以直接调用,不过我们心里面要清楚函数需要的参数是什么.这些常用的函数包括(后面会看到,如果调用•box(矩形的左下角,矩形的右上角);•ellipse(椭圆的中心,水平方向的轴长,竖直方向的轴长);•drawline(直线的第一个点,直线上的第二个点);import graph;size(200);pair min=(-2,-2);pair max=(2,2);pair O=(0,0);pair A=(2,0);draw(box(min,max),red);draw(circle(O,1),magenta);draw(ellipse(O,2,1),green);2.8画正多边形92.8画正多边形size (200);draw (unitcircle );filldraw (polygon (5),lightgreen );2.9画圆弧圆弧是圆的一部分,用arc 函数.path arc (pairc,real r,real angle1,real angle2);size (200);defaultpen (linewidth (4));pair O=(0,0);draw (arc (O,2cm ,0,120),red );draw (arc (O,2cm ,120,180),green );其中defaultpen (linewidth (4));把默认的画笔的设为4bp 粗细.有时候我们希望画一个角之间的圆弧,比如通常的平面几何的图形中给角做一个标记,默认的作图没有这个功能,这时就要调用10第二章2D绘图import geometry;size(200);pair O=(0,0);pair P=(2,0);pair Q=(2,2);dot("$P$",P);dot("$Q$",Q);dot("$O$",O,W);draw(P--O--Q);draw(arc(P,O,Q,1),Arrow);draw(arc(Q,O,P,1.5),red,Arrow);2.10画直角记号直角符号用perpendicular函数,同样要调用geometry宏包.基本的用法是perpendicular(pair z,pair align,pair dir);perpendicular(pair z,pair align,path g);该直角是相对z--z+dir的,align表明它的安置的方位,给出路径g的话,Asymptote会把它转成该路径g的切线方向(关于路径的切线方向我们以后阐述).import geometry;size(200);real a=3,b=4,c=5;pair A=(0,0);pair B=(a+b,0);pair C=(a+b,a+b);pair D=(0,a+b);pair X=(a,0);pair Y=(a+b,a);2.11自定义函数11pair Z=(b,a+b);pair W=(0,b);draw(A--B--C--D--cycle);draw(X--Y--Z--W--cycle);perpendicular(A,NE,A--B);perpendicular(X,NE,X--Y);perpendicular(Y,NE,Y--Z);perpendicular(Z,NE,Z--W);perpendicular(W,NE,W--X);2.11自定义函数我们也可以自己定义新函数.假定我们要画一条抛物线y=x2,我们要预先定义一个函数.格式如下real f(real x){return y=xˆ2;};其中real x声明函数自变量x是实数型,f前面的real声明函数f也是一个实数型.2.12画参数曲线利用若干个点画曲线能力有限,我们可以利用数学中的参数曲线来生成更丰富多彩而且有意义的曲线.import graph;size(200);real f(real x){return xˆ2;}path p=graph(f,-2,2,operator..);draw(p,red);xaxis("$x$",Arrow);yaxis("$y$",Arrow);12第二章2D绘图函数graph是一个返回数据类型为路径path(其实是称为guide的数据类型,与path稍微有些区别)的函数.它需要知道要画的函数real f(real x),所画函数自变量的变换范围,还有就是用折线画还是用光滑曲线画.因此,前面代码调用它的格式如下:--);guide graph(real f(real),real a,real b,interpolate join=operatorimport graph;size(200,0);real f1(real x){return x;}real f2(real x){return xˆ2;}real f3(real x){return xˆ3;}guide f1=graph(f1,0,1.5,operator..);guide f2=graph(f2,0,1.5,operator..);guide f3=graph(f3,0,1.5,operator..);draw(f1,green);draw(f2,red);draw(f3,blue);label(Label("$y=x$",position=EndPoint,align=E),f1);label(Label("$y=xˆ2$",EndPoint,E),f2);label(Label("$y=xˆ3$",EndPoint,E),f3);2.13画阴影13xaxis("$x$",Arrow);yaxis("$y$",Arrow);•在Label()函数中加position=EndPoint,那么就会标在所画曲线的末端.•类似地,标y轴时用align=N把y安置(align)在y轴默认的position=EndPoint的北边.2.13画阴影传统的图形,特别是印成黑白颜色的图形,通常是希望在封闭曲线里面填上阴影而不是颜色. Asymptote的宏包patterns提供了一些模式,我们先讲最常见的一种hatch画阴影.size(200);import patterns;add("name",hatch(NW));fill(unitsquare,pattern("name"));•hatch(NW)是一种西北走向的阴影斜线的图形.用add("name",hatch(NW));命名为”name”.•接下去用pattern("name")的方式把它做成一个类似与颜色的画笔.•hatch()函数还有其他参数,比如线的粗细,线的间隔等.2.14子图在Asymptote中我们可以独立的画一些图,然后再分别添加到图上.这时,我们可以定义一些称为picture的数据类型.14第二章2D绘图size(200);picture pic;picture fig;filldraw(pic,unitcircle,green);filldraw(fig,unitsquare,red);add(pic);add(fig);这与直接画的效果似乎是一样的,不过用这种独立画的方式的其中一个便利的地方是可以随意控制图片的画出顺序.这时候用above=true和above=false控制的.size(200);picture pic;picture fig;filldraw(pic,unitcircle,green);filldraw(fig,unitsquare,red);add(pic);add(fig,above=false);我们看到,现在最后加上的图反而给前面画的图盖住了.这种灵活的独立图形的输出的是独立画图的好处之一.这个也用在下面的clip命令用法当中以及以后的动画制作.2.15裁剪命令clip除了前面已经阐述的draw,fill,label三个基本命令以外,还有一个clip命令,可以借助于封闭曲线裁剪出该曲线围成的区域里面的部分.clip(picture pic=currentpicture,path g,stroke=false,pen fillrule=currentpen) ;2.15裁剪命令CLIP15size(200);import patterns;draw(unitcircle,red);add("name",hatch(NW));filldraw(unitsquare,pattern("name"));clip(currentpicture,unitcircle);利用clip这个函数,我们可以任意地裁剪出我们所想要的东西,然后再用add函数添加.size(200);draw(unitcircle);path p=(-1,0)--(1,1)--(1,0)--cycle;filldraw(p,lightgray);picture pic;draw(pic,unitcircle,dashed+red);clip(pic,p);add(pic);我们定义了一个子图pic用来独立画一个虚线单位圆,然后用路径p把它剪下来.最后在用add添加到图上.下面的Venn图的例子运用上面技巧画出了两个集合交集部分的.16第二章2D绘图size(7cm,0);pair C1=(-3,0),C2=(3,0);real r=4;path circleA=circle(C1,r);path circleB=circle(C2,r);fill(circleA,0.8white);fill(circleB,0.8white);picture pic;fill(pic,circleA,0.6white);clip(pic,circleB);add(pic);draw(circleA);label("$A$",C1,UnFill(1mm));draw(circleB);label("$B$",C2,UnFill(1mm));draw(Label("$A\cap B$",0),(0,-5)--(0,0),Arrow);shipout(bbox(5mm,invisible));2.16unfill命令Asymptote利用clip这个功能定义了一个非常好用的unfill命令,可以利用封闭曲线来挖洞.前面我们已经见过UnFill,再举一个例子.2.17奇偶法则填颜色17 2.17奇偶法则填颜色我们前面已经看到fill命令可以在封闭循环的路径内填上各种颜色.size(200);pair O=(0,0);path p1=circle(O,1);path p2=circle(O,2);fill(p1ˆˆp2,evenodd+magenta);2.18变换变换可以使得我们可以利用原来的图形来生成新的图形.Asymptote可以进行一般的仿射变换,即可以进行旋转,伸缩,旋转,反射等变换以及它们的复合.平移变换是transform shift(real x,real y);transform shift(pair z);分别为依照向量(x,y)和z平移.size(200);filldraw(unitsquare,palegreen);filldraw(shift(1,0)*unitsquare,mediumgreen);filldraw(shift(2,1)*unitsquare,heavygreen);伸缩变换包括18第二章2D 绘图transform xscale (real x);transform yscale (real y);transform scale (real s);transform scale (real x,realy);transform slant (real s);错切变换slant 变换把点(x,y)变换为(x+s*y,y).size (200);draw (unitsquare ,lightgreen );draw (slant (2)*unitsquare ,lightred );pair C=(0.5,0.5);dot (C,lightgreen );dot (slant (2)*C,lightred );从图中可以看到,点(0.5,0.5)经过错切slant (2)变换后变成点(1.5,0.5).经过简单的运算,我们可以知道s =tan α,其中α是错切变换slant 的倾斜角.transformrotate (real angle ,pair z=(0,0));旋转变换rotate 是绕着点z 旋转angle 度数.默认是绕着坐标原点旋转.import geometry;size (200);pair O=(0,0);pair P=(3,1);pair V=(2,2);pair A=P+V;2.19简单的编程19pair B=rotate(60,P)*A;draw(O--P);dot("$P$",P,S);draw(Label("$A$",EndPoint),P--A,Arrow);draw(Label("$B$",EndPoint),P--B,Arrow);draw(Label("$60ˆ{\circ}$",blue),arc(A,P,B,1.2),red,Arrow);transform reflect(pair a,pair b);反射变换是以a--b这条直线为对称轴反射.2.19简单的编程Asymptote的语法类似于C,C++,以及Java.不过本书不假定读者有任何的编程语言背景,反而是希望直接学习asy这种有趣的绘图语言.我们在前面已经接触了它的一些语法,这里归纳一下.首先,每一个变量都要声明它的数据类型.比如real x;pair z;然后对应地赋予相应的值.x=1.0;z=(3.0,4.0);最后,就是一些程序设计语言都有的判断语句和循环语句.我们在这里说一下用的最多的for循环语句.假定我们要画半径分别为1,2,3,...的几个同心圆,我们当然可以如下画出:defaultpen(magenta);size(200);pair O=(0,0);draw(circle(O,1));draw(circle(O,2));draw(circle(O,3));20第二章2D绘图这也未尝不可,可是再要求多画几个,大家也就会觉得烦了.编程语言都提供一种叫for循环的语句去干这个事情.defaultpen(magenta);size(200);pair O=(0,0);for(int i=1;i<4;++i){draw(circle(O,i));}我们解释一下for括号里面三个语句的意思.•第一个语句int i=1;是对变量i赋予初始值1;•第二个语句i<4;是判断i是否小于4,如果是,就执行draw(circle(O,i));•第三个语句++i把i增加1.按照这个规律,与i=1对应的draw(circle(O,1))是最先执行的.然后i++使得i从1增加到2,仍然满足i<4这个的条件,因此,接下去可以执行i=2对应的draw(circle(O,2)).做完以后把i++又使得i从2增加到3,i=3对应的draw(circle(O,3))被执行.最后,变量i增加到4.由于此时i已经增加到了4,不再满足i<4的条件,因此for就此停止工作.我们看到,现在也是恰好画了半径分别为i=1,i=2,i=3的三个同心圆,是不是很神奇!下面再列举一些简单的例子.2.19简单的编程21size(200);int n=5;for(int i=0;i<n;++i){dot(dir(i*360/n),red+6pt);}size(200);int n=8;real step=360/n;for(int i=0;i<n;++i){draw(rotate(i*step)*xscale(.5)*unitcircle);}size(200);for(int i=0;i<=8;++i){draw((i,0)--(i,8));draw((0,i)--(8,i));}下面的例子稍微复杂一些,即先在一个picture pic;里面画好一个基本的图形,然后通过平移达到铺砌平面.22第二章2D绘图size(8cm,0);path A=(0,0)--(2,1)--(2,3)--(0,2)--cycle;path B=reflect((0,0),(0,1))*A;path C=rotate(180,(0,0))*A;path D=reflect((0,0),(1,0))*A;picture pic;filldraw(pic,AˆˆC,lightblue+white,black);filldraw(pic,BˆˆD,lightred+white,black);for(int i=0;i<9;++i){for(int j=0;j<6;++j){add(shift(4*i,6*j)*pic);}}由于循环的应用大部分是与数组结合起来的,因此我们后面还有讨论一下数组以及它的应用,到时候我们有更为精彩的例子可以介绍.2.20与向量pair有关的一些函数我们先归纳一下与向量pair这种数据类型有关的一些知识.int整数类型;如果没有给定初始式,默认值为0.整数允许的最小值为intMin,最大值为intMax.我们可以用2.20与向量PAIR有关的一些函数23write(intMin);write(intMax);看看这两个数.real实数;它将设为计算机结构的本地浮点类型的最大精度.实数的隐式初始式为0.0.实数具有精度realEpsilon,有效数字为realDigits.最小的正实数为realMin,而最大的正实数为realMax.pair向量,也看成是复数,实数构成的有序对(x,y).复数z的实部和虚部可读为z.x和z.y.我们称x和y为复数数据元素的虚拟成员;然而,它们不能直接修改.复数的隐式初始式为(0.0,0.0).pair conj(pair z)返回z的复共轭.real length(pair z)返回向量z的长度,即复数的模.real abs(pair z)与length(pair)功能一样.real angle(pair z)返回z的幅角,单位为弧度,在区间[−π,π]内取值.real degrees(pair z,bool warn=true)返回z的幅角,单位为度,在区间[0,360)内,当warn为false且z.x=z.y=0时返回0(而不是产生错误).这个warn=flase可以在与极坐标互相转换时避开(0,0)这个奇点.pair unit(pair z)返回与复数z同方向的单位向量.pair expi(real angle)返回以弧度角angle为方向的单位向量,这里用expi这个符号是源于e iθ.pair dir(real degrees)返回以角度degrees为方向的单位向量,real xpart(pair z)返回z.x.real ypart(pair z)24第二章2D绘图返回z.y.real dot(pair z,pair w)返回点积(内积)z.x*w.x+z.y*w.ypair minbound(pair z,pair w)返回(min(z.x,w.x),min(z.y,w.y)).pair maxbound(pair z,pair w)返回(max(z.x,w.x),max(z.y,w.y)).2.21Bezier曲线的原理及与path有关函数Asymptote画曲线与通常的其他软件不一样,并非采用折线逼近来生成曲线的办法,而是采用一种称为Bezier曲线办法.我们在此花一些篇幅来介绍这个概念.因为一旦我们理解Asymptote这种生成曲线或曲面的方法,将会有助于我们理解Asymptote的与路径path相关的一些命令,做到心中有数,也有助于灵活地解决问题.我们前面已经懂得如何画直线段,如何生成曲线呢?1959年,法国人Paul de Casteljau(与此独立地,1962年的Bezier)发现了现在称为Bezier曲线的生成光滑曲线的办法.我们在此阐述一下其中巧妙的想法.import graph;size(200);pair Z0=(0,0),Z1=(4,0),C=(1,3);real t=1/3;pair A=interp(Z0,C,t);pair B=interp(C,Z1,t);pair Z=interp(A,B,t);2.21BEZIER曲线的原理及与PATH有关函数25draw(Z0--C--Z1);draw(A--B);arrow("$t=\frac{1}{3}$",Z,SE);pair f(real t){return(1-t)ˆ2*Z0+2t*(1-t)*C+tˆ2*Z1;}draw(graph(f,0,1),red);dot("$A$",A,W);dot("$B$",B,NE);dot("$C$",C,N);dot("$Z_{0}$",Z0,S+S);dot("$Z_{1}$",Z1,SE);dot("$Z$",Z,N);dot(Z,red,UnFill);给出Z0和Z1两个点,我们只能得到连接它们的直线段,此时如果给出一个时刻t,那么我们可以通过这个时刻访问到这条线段上以t为比例的点,即(1−t)Z0+tZ1.de Casteljau天才的想法是添加一个额外的点C,并且把它称为控制点.然后我们顺次连接Z0,C,Z1,只能得到一段折线,下面我们按照一个比例t(我们也称为时刻t),比如t=13,然后在Z0到C的13处取一个点A,同样,在C到Z1的13处取另外一个点B,连接A与B,然后在A到B的13处再取点Z,那么就称Z为对应于这个时刻1一个点.我们可以想象,当那些时刻遍历0到1的所有的时刻,就得到一条轨迹,通过简单的代数运算,我们可以依次得到A=(1−t)Z0+tC(2.1)B=(1−t)C+tZ1(2.2)Z=(1−t)A+tB(2.3)把(2.1)和(2.2)代入(2.3),我们可以得到Z与t的关系.Z(t)=(1−t)2Z0+2t(1−t)C+t2Z1这是一条过Z0和Z1的二次参数曲线.这种BeZier曲线有许多良好的性质,比如我们可以不用真正的遍历0到1之间的所有时刻,只需按照计算机通常的迭代办法,分别就刚才的Z0,A,Z与Z,B,Z1重复刚才的做法(那个比例13固定),又可以得到其他两个该曲线上的点,这样做足够多却是有限多次,就能生成一条肉眼看起来是连续的曲线.我们上面得到的是2次的参数曲线,如果采用两个控制点,那么我们就能得到3次的Bezier曲线,其中的原理是类似的,请观察图.(1−t)3z0+3t(1−t)2c0+3t2(1−t)c1+t3z1Asymptote里面就是采用这种3次曲线.我们可以把这种生成曲线的方式推广到曲面.而且这种逐点的方式非常有利用我们以后产生光滑渐变的染色效果(请参见后面3D曲面的颜色渐变效果部分)26第二章2D绘图size(200);pair z0=(0,0),c0=(1,1),c1=(2,1),z1=(3,0);draw(z0--c0--c1--z1);real t=1/3;pair m0=interp(z0,c0,t);pair m1=interp(c0,c1,t);pair m2=interp(c1,z1,t);pair m3=interp(m0,m1,t);pair m4=interp(m1,m2,t);pair m5=interp(m3,m4,t);dot(m0);dot(m1);dot(m2);dot(m3);dot(m4);dot(m5);draw(m0--m1--m2);draw(m3--m4);draw(z0..controls c0and c1..z1,red);下面我们介绍一下与路径path有关的一些函数.pair precontrol(path p,int t)pair postcontrol(path p,int t)int length(path p)一般的曲线是由若干条Bezier曲线连接起来的,这里返回的是路径p的总的分段数目.比如我们可以用write(unitcircle);write(length(unitcircle));看看unitcircle的构造以及它的length.pair point(path p,real t)我们在前面已经介绍了Bezier曲线的生成原理,从中我们可以知道,对于一条这种两个控制点的3次Bezier曲线,随便给出一个时刻t,我们是可以很简单的得出时刻t对应的点.2.22数组27(0,0)(1,1)(2,1)(3,0)size (200);pair z0=(0,0),c0=(-1,2),c1=(4,3),z1=(3,0);path p=z0..controls c0and c1..z1;draw (p,red );dot ("$(0,0)$",z0,S );dot ("$(1,1)$",c0,N );dot ("$(2,1)$",c1,N );dot ("$(3,0)$",z1,S );write (precontrol (p,0));write (postcontrol (p,0));write (precontrol (p,1));write (postcontrol (p,1));2.22数组我们经常要表示一列对象A 0,A 1,A 2,···,它们具有相同的类型.28绘图2.23subfigureimport slopefield;picture base;size(base,200);real func(real x){return2x;}add(base,slopefield(func,(-3,-3),(3,3),20,Arrow));draw(base,curve((0,0),func,(-3,-3),(3,3)),red);draw(base,box((0,0),(1,1)),blue);add(base.fit());clip(base,box((0,0),(1,1)));add(scale(0.5)*base.fit(),(150,10));2.24graph宏包import graph;2.24GRAPH 宏包29size (10cm ,0);import patterns;pen helpline =linewidth (0.5bp );add ("hatch",hatch (helpline));real r=30;path rec=box ((-50,-50),(180,80));path c1=circle ((0,0),r);path c2=shift (2*r+50,0)*c1;pair a=(r+10,0),b=(r+40,0),z=(0,3);path rec2=box (a-z,b+z);fill ((rec ˆˆc1ˆˆrec2),evenodd +pattern ("hatch"));draw (c1ˆˆc2ˆˆrec2,red );draw ((0,0)--r*dir (45),Arrow );label ("$\theta $",r/2*dir (20));label ("$R_0$",2*r/3*dir (70));label ("$r_1$",a-3*z);label ("$r_2$",b-3*z);xaxis (Label ("$X $",align =NE ),Arrow );yaxis (Label ("$Y $",align =NE ),Arrow );0.51C r o s s P o w e r (a .u .)01234Frequency(kHz)φf 1vs φf 11φf 6vs φf 11import graph ;unitsize (4cm ,8cm );defaultpen (1.5pt +fontsize (20pt )+Helvetica ());30第二章2D绘图real f(real x){return sin(2pi*x)ˆ2*exp(-x);}real g(real x){return cos(2pi*x)ˆ2*exp(-x);}draw(graph(f,0,4,operator..),red,"$\phi_{f_1}$ vs $\phi_{f_{11}}$");draw(graph(g,0,4,operator..),blue+linetype("2 2"),"$\phi_{f_6}$ vs $\phi_{f_{11}} $");xaxis("Frequency(kHz)",BottomTop,LeftTicks);yaxis("Cross Power(a.u.)",LeftRight,RightTicks());xequals(1,blue+Dotted);xequals(2,blue+Dotted);xequals(3,blue+Dotted);yequals(0.5,blue+Dotted);add(legend(),point((0)),NE,UnFill);2.25数项级数表示的函数import graph;size(200,IgnoreAspect);typedef real func(real);//定义一种新的数据类型funcfunc f(int n){return new real(real x){return(n*x-1/2-floor(n*x-1/2));};//real g(real x){return(n*x-1/2-floor(n*x-1/2));};return g;}2.25数项级数表示的函数31int n=20;real Sum(real x){real s=0;for(int i=0;i<n;++i){s=s+f(i)(x);}return s;}draw(graph(Sum,0,2,operator--),red);import graph;size(0,100);real u(real x){return abs(x-floor(x+1/2));}typedef real func(real);//定义一种新的数据类型funcfunc f(int n){return new real(real x){return u(4ˆn*x)/4ˆn;};}int n=20;real Sum(real x){real s=0;for(int i=0;i<n;++i){s=s+f(i)(x);}return s;}draw(graph(Sum,-1,1,operator--),red);32第二章2D 绘图2.26极坐标306090120150180210240300330size (200);import graph ;pair O=(0,0);real f(real r){return 2*r;}draw (polargraph (f,0,2pi ,operator ..),red );for (int i=0;i<4;++i){draw (circle (O,5*i),grey +dashed );}int n=12;for (int i=0;i<n;++i){label (string (i*30),16*dir (i*30));draw (O--15*dir (i*30),gray +dotted );}2.27分段函数2.28画线程图33import graph ;size (200,IgnoreAspect );pair []z={(0,1/4),(1/4,1),(1,2+3/4),(2+3/4,4+1/4),(4+1/4,5)};real []Y ={1,0.92,0.8325,0.7217,0.5171};for (int i=0;i<Y .length ;++i){draw ((z[i].x,Y [i])--(z[i].y,Y [i]),red );dot ((z[i].x,Y[i]));dot ((z[i].y,Y[i]),UnFill );}xaxis ("$x $",0,5.5,Arrow );yaxis ("$y $",0,1.4,Arrow );2.28画线程图size (200);real margin =1mm ;pair A=(0,2),B=(-2,0),C=(2,0),D=(-2,-2),F=(2,-2);object one=draw ("$1$",ellipse ,A,margin );object four=draw ("$4$",ellipse ,B,margin );object five=draw ("$5$",ellipse ,C,margin );object two=draw ("$2$",ellipse ,D,margin );object three=draw ("$3$",ellipse ,F,margin );add (new void (picture pic,transform t){draw (pic,Label ("two",align =W ),point (two,SW ,t){SW }..{SE }point (two,NW ,t),Arrow );draw (pic,Label ("three",align =E ),point (three,SE ,t){SE }..{SW }point (three,NE ,t),Arrow );34第二章2D绘图draw(pic,Label("four",align=W),point(four,NW,t){NW}..{NE}point(four,SW,t), Arrow);draw(pic,Label("five",align=E),point(five,NE,t){NE}..{NW}point(five,SE,t), Arrow);draw(pic,point(one,SW,t){SW}..{SW}point(four,NE,t),Arrow);draw(pic,point(one,SE,t){SE}..{SE}point(five,NW,t),Arrow);draw(pic,point(four,E,t){E}..{E}point(five,W,t),Arrow);draw(pic,Label("$\frac{1}{2}$",align=N),point(two,NE,t){NE}..{SE}point(three,NW,t),Arrow);draw(pic,Label("$\frac{1}{4}$",align=N),point(three,SW,t){SW}..{NW}point(two,SE,t),Arrow);});2.29读入数据绘图import graph;size(400);file fin=input("ln12");real[][][]d=dimension(fin,2,3,2);real[]x,y;for(int j=0;j<2;++j){for(int i=0;i<3;++i){x[i]=d[j][i][0];y[i]=d[j][i][1];}draw(graph(x,y),red);}1324331425342.30各种循环语句352.30各种循环语句A 1A 2A 3A 4A 5A 6A 7A 8A 9A 10A 11A 12size (200);int n=12;int k=5;defaultpen (linewidth (1)+fontsize (20));pair P(int i){return dir (90+k*(360/n)*i);}Label L(int i){return Label (format ("$A_{%d}$",i+1),align =P(i));}pair []star=sequence (P,n);Label []starlabel=sequence (L,n);dot (starlabel,star);draw (operator --(...star)--cycle );2.31弯曲路径上标标签中华人民共和国万岁texpreamble ("\usepackage{CJKutf8}\AtBeginDocument{\begin{CJK*}{UTF8}{gbsn}} \AtEndDocument{\clearpage\end{CJK*}}");size (200);import labelpath ;path p=reverse (rotate (-90)*yscale (2)*xscale (4)*unitcircle );labelpath ("中华人民共和国万岁",p,red );//draw(p);36第二章2D 绘图中华人民共和国万岁texpreamble ("\usepackage{CJKutf8}\AtBeginDocument{\begin{CJK}{UTF8}{gbsn}} \AtEndDocument{\clearpage\end{CJK}}");size (200);path p=reverse (arc ((0,0),1,20,160));string []fonts={"中","华","人","民","共","和","国","万","岁"};pen []colors ={cyan ,magenta ,yellow ,green ,blue ,red };colors .cyclic (true );for (int i=0;i<fonts.length ;++i){label (scale (2)*fonts[i],point (p,i/(fonts.length -1)*length (p)),colors [i]);}draw (p,lightgray );中华人民共和国万岁texpreamble ("\usepackage{CJKutf8}\AtBeginDocument{\begin{CJK}{UTF8}{gbsn}} \AtEndDocument{\clearpage\end{CJK}}");size (200);path p=reverse (arc ((0,0),1,20,160));string []fonts={"中","华","人","民","共","和","国","万","岁"};pen []colors ={cyan ,magenta ,yellow ,green ,blue ,red };colors .cyclic (true );for (int i=0;i<fonts.length ;++i){real a=i/(fonts.length -1)*length (p);pair Position=point (p,a);pair T=dir (p,a);2.32随机37real Angle=degrees(T);label(rotate(Angle,Position)*scale(2)*fonts[i],Position,colors[i]);}draw(p,lightgray);2.32随机size(200);pen colorpen=blue;pair end=(0,0);pair direction=E;srand(seconds());void randomwalk(int n){if(n==0)return;else{real angle=rand()%360;real lambda=1;pair begin=end;end=begin+scale(lambda)*direction;path randompath=begin--end;draw(randompath,colorpen);direction=rotate(angle)*direction;randomwalk(n-1);}}randomwalk(1000);38第二章2D 绘图2.33分形图ab esize (300,0);defaultpen (linewidth (1pt )+fontsize (20));real shortening=0.5;void tree (pair A,pair B,int n){pair C,D,M;C=B+shortening*(rotate (90,B)*A-B);D=B+shortening*(rotate (-90,B)*A-B);M=B+shortening*(rotate (180,B)*A-B);if (n>0){draw (A--B);tree (B,C,n-1);tree (B,D,n-1);tree (B,M,n-1);}else {draw (A--B);draw (B--C);draw (B--D);draw (B--M);}2.33分形图39}tree((0,0),(0,1),4);/*tree((0,0),(1,0),4);tree((0,0),(-1,0),4);tree((0,0),(0,-1),4);draw(Label("$a$",EndPoint,NW),(0,0)--(1,0),red+2pt);draw(Label("$b$",EndPoint,SE),(0,0)--(0,1),blue+2pt);label("$e$",(0,0),NE);*/下面画树的代码是从Learning METAPOST by Doing的METAPOST代码翻译过来的.size(200);real branchrotation=60;real offset=180-branchrotation;real thinning=0.7;real shortening=0.8;srand(seconds());void tree(pair A,pair B,int n,real size){pair C,D;real thickness=size;real r_angle=offset+(branchrotation*(unitrand()));C=B+shortening*(rotate(r_angle,B)*A-B);real l_angle=offset+(branchrotation*(unitrand()));D=B+shortening*(rotate(-l_angle,B)*A-B);if(n>0){40第二章2D绘图draw(A--B,linewidth(thickness));thickness=thinning*thickness;tree(B,C,n-1,thickness);tree(B,D,n-1,thickness);}else{draw(A--B,linewidth(thickness));thickness=thinning*thickness;draw(B--C,linewidth(thickness));draw(B--D,linewidth(thickness));}}tree((0,0),(0,1),10,2mm);2.34动画import animate;pair[]P={(5,0),(-8,50),(55,50),(100,0)};defaultpen(fontsize(20pt)+1.5pt);animation Ani;int n=30;for(int i=0;i<n;++i){2.35与XASY结合绘图41picture pic;size(pic,400);real t=i/n;pair A=interp(P[0],P[1],t);pair B=interp(P[1],P[2],t);pair C=interp(P[2],P[3],t);pair U=interp(A,B,t);pair V=interp(B,C,t);pair W=interp(U,V,t);draw(pic,P[0]--P[1]--P[2]--P[3]);draw(pic,A--B--C,green);draw(pic,U--V,blue);draw(pic,P[0]..controls A and U..W,red);Ani.add(pic);}Ani.pdf(delay=400,"control");2.35与xasy结合绘图size(0,200,IgnoreAspect);import graph;path p0=(0,0)..controls(19.1626305611,9.53339005251)and(34.4106887299,27.2072756573)..(44,48)..controls(52.0319312179,65.4158213296)and(55.8872099039,84.6685012723) ..(66,101)..controls(79.5675370561,122.910690528)and(104.662033674,136.247402292) ..(126,125)42第二章2D绘图..controls(139.515072689,117.876103692)and(145.270118249,102.660055607) ..(152,89)..controls(158.917506848,74.9591101743)and(167.753273728,61.7678239834) ..(180,52)..controls(190.315187474,43.7727453553)and(202.945383656,38.316393021)..(216,40)..controls(232.951635585,42.1861915528)and(245.759610698,55.3306870085) ..(253,71)..controls(263.884987238,94.556781939)and(262.765590107,122.789002413)..(278,144)..controls(283.864988393,152.165872884)and(292.054412958,158.744370744) ..(302,160)..controls(324.100991125,162.790247667)and(339.118758573,141.703444546) ..(350,121)..controls(362.275681403,97.6433921255)and(374.681335139,74.0387013701) ..(393,55)..controls(398.248521358,49.5451793825)and(403.934116961,44.5284773796) ..(410,40);draw(p0,linewidth(2));xaxis();yaxis();real t0=dirtime(p0,(1,0));dot(point(p0,t0),red+linewidth(4));path p1=subpath(p0,t0+10epsilon,infinity);real t1=dirtime(p1,(1,0));dot(point(p1,t1),green+linewidth(4));path p2=subpath(p1,t1+10epsilon,infinity);real t2=dirtime(p2,(1,0));dot(point(p2,t2),blue+linewidth(4));arrow("Research",point(p0,t0),N,red);arrow("Standards",point(p1,t1),N,green);arrow("{Billion dollar} {investment}",point(p2,t2),N,blue);arrow("Time",(250,-10),W);。
CAD教案第二章内容(1)
教学过程:第2章基本绘图命令和编辑方法在绘图过程中,无论多复杂的几何图形都是由基本的图形要素组成的,这些基本图形包括直线、圆、圆弧等。
绘制和修改编辑这些基本图形的命令就构成了AutoCAD的最基本的绘图命令。
因此要想熟练地绘制图形,还需熟悉和掌握这些最基本的绘图命令和图形编辑方法等。
2.1 命令的执行方式AutoCAD的操作过程由AutoCAD命令控制。
常用的命令执行方式有以下三种:在命令行输入命令名。
即在命令行的“命令:”提示后输入命令的字符串或者是命令字符串的的快捷方式,命令字符不区分大、小写。
单击菜单栏中命令,在状态栏可以看到相应的命令说明即命令名。
单击工具栏中的对应图标,执行相应命令。
在上述所有的执行方式中,在命令行输入命令名是最为稳妥的方式,因为AutoCAD 的所有命令均有其命令名,但却并非所有的命令都有其子菜单项、命令快捷方式和工具栏图标,只有常用的才有。
2.2 绘制直线几何图形在建筑施工图的绘制中,用的最多而且用途最广泛的图形元素是直线及由直线组成的集合图形。
本节将介绍直线及由直线组成的几何图形的绘制方法,掌握AutoCAD2008绘图的最基本技能。
2.2.1 绘制点(Point)AutoCAD中的绘制点的命令是Point。
启动Point命令有如下3种方法:下拉菜单【绘图】点命令。
在工具栏上单击按钮。
在命令:提示下输入Point(简捷命令PO)并回车。
启动Point命令后,命令行出现提示指定点:要求输入或用光标确定点的位置,确定一点后,便在该点出现一个点的实体。
2.2.2 绘制直线(Line)绘制直线的命令是Line。
执行画线命令Line,一次可画一条线段,也可以连续画多条线段(其中每一条线段都彼此相互独立)。
直线段是由起点和终点来确定的,可以通过鼠标或键盘来决定起点或终点。
启动Line命令,可使用下列3种方法之一:下拉菜单【绘图】直线命令。
在绘图工具栏上,单击Line工具按钮。
《AutoCAD》教学指导教案
《AutoCAD》教学指导教案第一章:AutoCAD概述1.1 课程目标了解AutoCAD的基本概念和发展历程。
掌握AutoCAD的界面组成和基本操作。
1.2 教学内容AutoCAD的概念和发展历程。
AutoCAD的界面组成:菜单栏、工具栏、绘图区、状态栏等。
AutoCAD的基本操作:新建、打开、保存文件,设置绘图环境等。
1.3 教学方法讲授法:讲解AutoCAD的概念和发展历程,界面组成和基本操作。
实践法:学生动手操作,熟悉AutoCAD界面和基本操作。
1.4 教学资源PPT课件。
AutoCAD软件。
1.5 教学评估课堂问答:了解学生对AutoCAD概念和发展历程的掌握情况。
上机操作:检查学生对AutoCAD界面和基本操作的熟悉程度。
第二章:基本绘图命令2.1 课程目标掌握AutoCAD的基本绘图命令。
能够绘制简单的二维图形。
基本绘图命令:Line(直线)、Circle(圆)、Rectangle(矩形)等。
绘制简单二维图形:直线、圆、矩形等。
2.3 教学方法讲授法:讲解基本绘图命令的使用方法。
实践法:学生动手操作,绘制简单二维图形。
2.4 教学资源PPT课件。
AutoCAD软件。
2.5 教学评估课堂问答:了解学生对基本绘图命令的掌握情况。
上机操作:检查学生绘制简单二维图形的能力。
第三章:基本编辑命令3.1 课程目标掌握AutoCAD的基本编辑命令。
能够对二维图形进行基本的编辑操作。
3.2 教学内容基本编辑命令:Select(选择)、Move(移动)、Scale(缩放)等。
基本编辑操作:选择对象、移动对象、缩放对象等。
3.3 教学方法讲授法:讲解基本编辑命令的使用方法。
实践法:学生动手操作,进行基本的编辑操作。
PPT课件。
AutoCAD软件。
3.5 教学评估课堂问答:了解学生对基本编辑命令的掌握情况。
上机操作:检查学生进行基本编辑操作的能力。
第四章:图层和线型4.1 课程目标掌握AutoCAD的图层和线型概念。
CAD绘图----第二讲基本操作和绘图环境绘图命令1
2021/8/6
9
基本设置
正交模式: 状态行中“正交”按钮控制开关。处在正交 模式下,光标只能平行于坐标轴移动。 极轴追踪: 状态行中“极轴”按钮控制开关。追踪目前 光标相对于前一个点的基坐标,与捕捉模式 配合,方便的确定长度。举例:绘制正方形。
2021/8/6
10
基本设置
❖ 对象捕捉和对象捕捉追踪:
就可以在低板本下打开了
2021/8/6
3
AutoCAD2004界面简介
❖ 一、文件名 ❖ 二、顶菜单:相近功能的命令列在一个菜单下。比如“文件”、“编辑”、“绘图”等。 ❖ 三、工具栏: ❖ 1、标准工具栏,与其他应用软件类似。 ❖ 2、图层工具栏,对象特性工具栏 ❖ 3、绘图工具栏 ❖ 4、修改工具栏 ❖ 5、工具栏的显示控制:“视图”——〉”工具栏”,打勾的显示,可以拖动显示的工具栏
❖ Line(画线)命令连续画下去,结束时点击鼠标右键或键盘回车键,选 择“确定”推出。画线过程中,键入“u”删除刚画的一段,键入“c”与 起点闭合。
2021/8ห้องสมุดไป่ตู้6
7
绘图命令简介
❖ Circle画圆命令: ❖ AutoCAD典型命令组成:一个命令可以有多种方式完成,
其中有一个默认选项,选它可以直接输入数据,如指定圆的 圆心,通过各种方法给出圆心位置,若选择其他选项(方括 号中的),则需要先键入其代号,如3p表示通过三个点画 圆,2p表示以两点连线为直径画圆,T表示与两个已有目标 相切、给定半径画圆。
❖ 指定光标位置方法(也适用于其他命令): 1、键入绝对直角坐标:x,y,z坐标间逗号隔开。 2、键入相对直角坐标,@后加相对于前一个点的坐标(与坐标轴同向为 正)。 3、键入相对极坐标:@极径<极角(与x轴正方向夹角,逆时针为正)。 4、光标拾取:点击鼠标左键,选定光标所在当前位置 以画正方形为例演示各种位置制定方法。
AI_PPT讲义_第2章_绘图基础
第二章 绘图基础
第二章 绘图基础
第二章 绘图基础
第10讲 重点:钢笔的操作方法
钢笔工具是最有效的绘图工具,注意钢笔工具在绘图过程中与节点选 择工具以及ctrl、alt的联合运用,同时还要灵活使用视图操作的快捷方式, 如空格切换到手形工具平移、ctrl与+/-实现显示比例放大缩小的操作。 在这一节里,我们用钢笔工具抠出一个动物的剪影。
第二章 绘图基础
第11讲 重点:变换面板
变换面板集中了调整“位置、大小、角度、倾斜、镜像”等重要
的基础功能。其中数字还可以采用“加、减、乘、除”的算式。
第二章 绘图基础
第12讲 绘制不规则形状
绘制曲线时,最好把填充颜色设为无,轮廓颜色设为黑。
第二章 绘图基础
第13讲 贝兹曲线常识
学习ADOBE产品的好处,就是包括Ps、AI、ID甚至是FLASH都采用 一套相同的曲线绘图技术。所以,你只要掌握了其中一个软件曲线操作, 其它软件都是相同相似的。
第二章 绘图基础
第14讲 重点:直接选择工具
将锚点转为尖点 显示控制线 连接选中的 两个节点 对齐依据
隐藏控制线 将锚点转为平滑点 删除节点 在选中的节 点处断开 隔离对象
注:隔离对象操作方式的作用与好处,希望大家好好领会。
第二章 绘图基础
第12讲 QQ图标
第二章 绘图基础
第13讲 重点:选择的两种状态
第二章 绘图基础
第14讲 树枝
第二章 绘图基础
第15讲 重点:复制的方法
复制是电脑操作最常用的命令之一,前面我们也运用多种复制手段, 这一讲我们把复制的功能作个梳理。 1、ALT+鼠标移动;这种方式缺点是复制后对象的位置也变了。 2、先ctrl+C,然后ctrl+F;这是一种原位复制的功能,注意与ctrl+B 区别。 以上是两种最常见的操作方式,大家要熟练掌握。 在变换工具下,如移动、旋转、镜像、缩放工具,也可以实现复制的 效果,那部分内容放到变换章节再介绍。另外在图层面板也可以进行复制, 这部分放到图层章节介绍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多段线的编辑
进入修改: 1、修改对象多段线选择编辑的多段线 2、选中多段线单击右键选择编辑多段线
编辑选项: 1、闭合(C):封闭多段线 2 、 合并(J):将端点连接的线条合并 为一条多段线 3、宽度(W):设置整条多段线的线宽度 4、编辑顶点(E):对线的顶点进行编辑
①下一个(N)/上一个(P):选择上一个或下一 个顶点
②打断(B):从当前点将线进行打断 ③插入(i):在当前点的后面插入一个顶点 ④移动(M):将当前点进行移动
⑤重生成(R):在绘线时如果有不光滑的现像,可
以将其刷新光滑
目录 下一张 上一张 首页
⑥拉直(S):将两点之间的线条拉直 ⑦切向(T):设置当前顶点的方向以便以后拟合
⑧宽度(w):修改当前顶点下一段起点的宽度和端点宽度
目录 下一张 上一张 首页
五、正多边形
命令:polygon
定义:边一样长的多边形 操作方法: 1、执行命令
2、指定边数` 3、指定中心 4、选择绘制内接还是外切多边形 5、指定多边形半径大小 选项:边(E):以指定多边形一条边的方式来绘制多边形
六、圆
命令:circle
命令位置:绘图圆…
目录 下一张 上一张 首页
十二、样条曲线
命令:Spline
命令位置:绘图样条曲线 定 义:一条自动光滑的曲线 绘制方法:直接用鼠标点击进行绘制
目录 下一张 上一张 首页
十三、点 命令:point 命令执行位置:1、绘图点
2、绘图工具栏上
绘制方法:
1、单点:执行一次命令只能绘制一个点 2、多点:执行一次命令可以绘制无数个点 3、定数等分:可以用点将一条线等分指定的份数 4、定距等分:可以用点按照一定的距离将线进行等分
点显示样式更改:
更改位置:格式点样式
目录 下一张 上一张 首页
作业
绘画以下图形:
Thank you!
第二讲:基本绘图命令
计划:
重点:绘图 要求:1、熟练绘图工具
2、熟练绘图
目录 下一张 上一张 首页
5、相对坐标 定义:相对于当前位置,以X轴距离和Y轴距离来确定下一
点的位置 输入格式:@X轴距离,Y轴距离 绘制以下线条:
目录 下一张 上一张 首页
6、相对角度 定义:相对于当前位置开始,以下一条线的长度和角度来绘
命令:pline
定义:一个可以由圆弧和直线连接的线条 绘制方法:与直线相同
选项:
1、圆弧(A):从直线的绘制转换到圆弧的绘制 2、闭合(C):将多段线闭合 3、半宽(H):设置多段线绘制宽度的一半 4、长度(L):以上一点的方向,绘制指定长度的线 5、放弃(U):放弃上一次绘制的线段 6、宽度(W):设置多段线绘制的宽度
绘制方法:
圆心、半径:以圆的圆心和半径绘制圆 圆心、直径:以圆的圆心和直径绘制圆 两点:确定圆上任意一条直线的两个端点绘制圆 三点:确定圆上任意三个点绘制圆 相切、相切、半径:确定圆的任意两个切点和半
径绘制圆 相切、相切、相切:分别确定圆的任意三个切点
绘制圆
目录 下一张 上一张 首页
七、多段线
命令:Mline 命令位置:绘图多线 绘制方法:和直线一样,(只不无过多线绘制出来的是多条平等直线)
选项:1、对正(J):设置多线与捕捉辅助线的对齐方式
①上:设置多线的上面一条线对齐捕捉的的下面一条线对齐捕捉的辅助线
2、比例(S):设置多线之间的宽度
目录 下一张 上一张 首页
3、多线修改
命令位置:修改对象多线 目录 下一张 上一张 首页
十一、椭圆
命令:ellipse
命令位置:绘图椭圆 操作方法:1、执行命令
2、指定其中一跟轴的两个端点 3、指定另外一跟轴的其中一个端点 选项:1、圆弧(A):可以绘制椭圆弧 2、中心点(C):可以用指定中心的方法来绘制圆
制线 输入格式:@线的长度<角度 绘制以下线条:
目录 下一张 上一张 首页
二、构造线
命令:Xline 定义:两端无限长的直线 绘制方法:直接用鼠标在视图中点击
三、射线
命令:Ray 定义:一端无限长的直线 绘制方法:直接用鼠标在视图中点击
四、矩形
命令:rectang
绘制方法:1、用鼠标直接拖动 2、用相对坐标绘制
九、云线
命 令:revcloud 命令位置:绘图云线 定 义:一条由圆弧组成的线条 绘制方法:执行命令后,直接用鼠标在视图中移动绘制 选 项:1、弧长(A):设置组成云线的最大弧长和最小弧长
2、对象(O):将其它线条转换为云线
目录 下一张 上一张 首页
十、多线
定义:由多条线条组成的平行线
1、多线绘制
起来
显示框:显示多线
导样式入:导入以前添样保式加存列:填部的表将填充中新充:,建颜设使好色置其的多生样线效式内添加到
的结果 元素特性:对多线的 内部元素进行修改
线颜型色:删:设除设置:置当删当前除添前多当加多线前:线线偏选增线条移择加条的:的多的类多线颜型线数色当线目线条条的位置
多线特性:对多线整体 的形状进行改变
⑨退出 (x):退出编辑顶点
5 、拟合(F) :使用点的切向(方向)将所有线条拟合为圆弧
6、样条曲线(S):将多段线改变为样条曲线索形状
7、非曲线化(D):将多段线变为直线
8、放弃(U) :放弃编辑
目录 下一张 上一张 首页
八、圆弧
命令:Arc 命令位置:绘图圆弧…
(10种绘制方法,在机子上操作)
3、样式(ST):选择绘制多线所使用的样式
目录 下一张 上一张 首页
2、多线样式
命令位置:格式多线样式
当前:当前使用的样式
名称:新建样式名字
显示连接封的保:起口存在点::多和设保线端置存的点多样中用线式
说明:新建样重式命说名明:为当前样 式重新取一个名字
间显示连直接线线或条圆弧连显接示框:多线线条的数目和状态