第十二课 定位画图---坐标
2016-01-06 15:31
78 查看
第十二课 定位画图---坐标
【平面坐标】
为了能描述一个地点的位置,一般有两种说法:
l 以自己当前的位置和方向为根据,描述相对的方向和距离。例如:向前走100米,右转再走50米。GoC的笔的fd、rt命令正是如此。
l 另一种方法是根据整个城市的地图,描述确定的地点。例如:在城市的东南方向。
第2种方法在数学上叫:平面直角坐标系。如下图表示:
坐标系由原点O、水平的X轴和垂直的Y轴构成。
坐标系中每一点的位置都用它在X轴和Y轴的位置表示,称为坐标。例如:(2,3)。
上图中A点的坐标为(3,5)、B点的坐标为(-5,1)、C点的坐标为(2,-3)。
【思考】
l 坐标(0,
0)位置在哪里?
l 坐标(-3,
-5)位置在哪里?
l 坐标(6,
1)位置在哪里?
GoC中的位置也是用直角坐标表示的,你可以在程序开始加显示坐标的命令:
showXY()更多的模式参数请查看帮助文档。
【坐标相关命令】
GoC里有几个与坐标系相关的命令:
使用move和line命令,可以比较方便地到指定的位置,在画和数学相关的图形时特别有效。
例题12.1:在X坐标轴上画13个点,位置从(-300,0)到(300,0)。如下图:
![](http://img.blog.csdn.net/20160106153505394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
分析
x坐标从-300开始,每次增加50,到300。利用move(x,0)到指定位置,再画个红色的圆即可。
例题12.2:画下面的图形。
分析:
连一些线,线的左端点在Y轴上,右端点固定为(300,0):
解题方法:用for语句的循环变量列举所有左端点的Y坐标,用move命令到左端点,再line到(300,0)画线即可。
例题12.3:风帆。
![](http://img.blog.csdn.net/20160106153603869?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
分析:
连一些线,线的左端点固定为(-300,0),线的中间点在Y轴上,右端点固定为(300,0):
解题方法:用for语句的循环变量列举所有左端点的Y坐标,用move命令到左端点,再line到中间Y轴上点和右端点(300,0)画线即可。
例题12.3(初中):画Y=X*X/30的函数图形。
分析:手工画函数的基本方法是“描点连线”。现在我们模拟这个方法。公式中如果不除30,x=100时y=10000,函数的图形高度会超出屏幕。
解题方法:用for语句的循环变量列举X从-100到100,计算出相应的Y值,就是一个点的坐标,用line画线即可。要先到第一点。
【练习】
一、填空题。根据题目的任务,填空完善程序。
二、编程题。
练习12.4:编程画出下面图形,正方形边长为200。
练习12.5:编程画出下面图形。
练习12.6:编程画一个等腰梯形,上底边长为60,下底编程为120,高为50。如下面图形。
![](http://img.blog.csdn.net/20160106153820789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
【学习目标】
(1) 掌握平面坐标(小学生可能要专门学习一下,比如用练习软件)。
(2) 掌握move和line命令。
(3) 学会用坐标定位画图。
【平面坐标】
为了能描述一个地点的位置,一般有两种说法:
l 以自己当前的位置和方向为根据,描述相对的方向和距离。例如:向前走100米,右转再走50米。GoC的笔的fd、rt命令正是如此。
l 另一种方法是根据整个城市的地图,描述确定的地点。例如:在城市的东南方向。
第2种方法在数学上叫:平面直角坐标系。如下图表示:
坐标系中每一点的位置都用它在X轴和Y轴的位置表示,称为坐标。例如:(2,3)。
【思考】
l 坐标(0,
0)位置在哪里?
l 坐标(-3,
-5)位置在哪里?
l 坐标(6,
1)位置在哪里?
GoC中的位置也是用直角坐标表示的,你可以在程序开始加显示坐标的命令:
showXY( ); | showXY(1); |
【坐标相关命令】
GoC里有几个与坐标系相关的命令:
坐标类命令 | |
pen.move(x , y); | 把“笔”移动到坐标位置(x,y)处,只是移动位置不画线。 例:pen.move(0,0);“笔”回到原点。 |
pen.line(x , y); | 从笔的当前位置画到坐标位置(x,y)处,画线不受笔的方向影响。 例:pen.line(100,100); |
例题12.1:在X坐标轴上画13个点,位置从(-300,0)到(300,0)。如下图:
分析
x坐标从-300开始,每次增加50,到300。利用move(x,0)到指定位置,再画个红色的圆即可。
样例程序12.1 | 图形 |
int main() { showXY(1); for(int x=-300; x<=300; x+=50) p.move(x,0).oo(3, _red); return0; } |
连一些线,线的左端点在Y轴上,右端点固定为(300,0):
解题方法:用for语句的循环变量列举所有左端点的Y坐标,用move命令到左端点,再line到(300,0)画线即可。
样例程序12.2 | 图形 |
int main() { // showXY(1); for(int i=0; i<300; i+=25) { pen.move(0,i); pen.line(300,0); } return0; } |
分析:
连一些线,线的左端点固定为(-300,0),线的中间点在Y轴上,右端点固定为(300,0):
解题方法:用for语句的循环变量列举所有左端点的Y坐标,用move命令到左端点,再line到中间Y轴上点和右端点(300,0)画线即可。
样例程序12.2 | 图形 |
int main() { // showXY(1); pen.size(5).fd(310); //画中间的柱子 pen.size(1).c(0); for(int y=300; y>=0; y-=30) { p.move(-300,0).line(0,y).line(300,0); } return0; } |
分析:手工画函数的基本方法是“描点连线”。现在我们模拟这个方法。公式中如果不除30,x=100时y=10000,函数的图形高度会超出屏幕。
解题方法:用for语句的循环变量列举X从-100到100,计算出相应的Y值,就是一个点的坐标,用line画线即可。要先到第一点。
样例程序12.3 | 图形 |
//程序名:样例程序12.2 //作者: gogo //2015.12.22 int main() { // showXY(); pen.move(-100,100*100/30); for(int x=-100; x<100; x++) { int y=x*x/30; pen.line(x,y); // pen.oo(2,3);//描点 } return0; } |
一、填空题。根据题目的任务,填空完善程序。
题目 | 程序 |
练习12.1画下面图形。 | int main() { // showXY(2); for(int x=-100; x<=200; x+=20) { p.move(x,100); p.line(-x, ); } return0 |
练习12.2(初中)画Y=kX的函数图形,k是键盘输入。 下面是输入-2的图形。 | int main() { showXY(); double k; cin>>k; for(int x=-200; x<=200; x++) { p.move(x, ); p.oo(2,3); } return0; } 注:变量k定义为double型,可以输入小数,比如:0.2。 |
练习12.3(高中)画Y=sin(x*w)*hight的函数图形。w是周期密度,hight是高。w=3,hight=200的图形如下: | int main() { // showXY(); int w=3; int hight= ; for(int x=-200; x<=200; x++) { p.move(x, sin(x*3.1416/180*w)*hight); p.oo(3,1); wait(0.01); // p.oo(5,_white); } return0; } 注:x是度数,但C++里sin函数参数单位是弧度,要转换一下:x*3.14/180。 加wait是增加动态效果。 |
练习12.4:编程画出下面图形,正方形边长为200。
参考程序: int main() { showXY(2); double len=200; p.c(1).size(2); for(int i=0; i<4; i++)//画正方形边框 p.fd(len).rt(90); p.size(1); for(double i=0; i<=len;i+= len/10) { p.move(0, i ).line(len-i,0); } return0; } |
【学习目标】
(1) 掌握平面坐标(小学生可能要专门学习一下,比如用练习软件)。
(2) 掌握move和line命令。
(3) 学会用坐标定位画图。
相关文章推荐
- iOS 消息推送
- 看懂执行计划 顺序
- Java并发编程:并发基础概念
- js对象或类的方法设计模式解读
- leetcode49 Group Anagrams
- MyEclipse 快捷键大全(@Hcy)
- 远程连接服务器的方法:
- 获取MAC地址
- iOS开发-完整学习路线图
- Matlab从三维矩阵中取出一列并且reshape
- swift获取图片像素颜色值
- apistore接口调用demo
- jxls操作excel文件
- 手把手带你画一个 时尚仪表盘 Android 自定义View
- 显式和隐式启动Activity、Service
- QtDesigner向toolBar中添加action
- 面试题42:数字在排序数组中出现的次数
- mysql 性能参数 innodb_flush_log_at_trx_commit
- Oracle lsnrctl--监听器的启动和关闭
- 手把手带你画一个 时尚仪表盘 Android 自定义View