您的位置:首页 > 其它

第十三课坐标计算---坐标扩展命令

2016-01-06 15:41 218 查看
第十三课坐标计算---坐标扩展命令
【坐标扩展命令】
GoC的坐标命令中还有几个扩展的命令。

坐标类扩展命令1
pen.getX();
取当前笔位置的X坐标值。
例:cout<< pen.x();
pen.getY();
取当前笔位置的Y坐标值。
例:cout << pen.y();
利用好扩展命令,有时可以得到意外的方便。
例题13.1:输入N,求边长为N的正三角形的高是多少?
例如N=200时,结果是:



分析:
上面图中,三角形的高就是上面顶点的Y轴坐标。



因此可以到达高度后,输出pen.getY( )即可。高度不一定是整数,要用小数,这里是double型。

样例程序13.1
图形
int
main()
{
double
N;
cin>>
N; //输入N

p.rt(30); //画正三角形
p.fd(N).rt(120); //到顶点

pen<<
pen.getY(); //输出高度

p.fd(N).rt(120); //继续画三角形
p.fd(N).rt(120);

return0;
}
N输入100时:



例题13.2:正方形变形。有一个边长是200的正方形,现在边长不变,当角度不是90度了,是45度和135度。请画出长对角线,如下图:



分析:
上面图中,平行四边形好画,但对角线怎么办?



三角形的对角线可以用line命令上连接图的原点O和A点。原单坐标是(0,0),只要知道在知道A点的坐标就可以了。可以用getX、getY函数获得笔位置的坐标。程序如下:
样例程序13.1
图形
int
main()
{
pen.rt(45);
pen.fd(200).rt(45);
pen.fd(200).rt(135);
double
x=pen.getX();//保存当前的x坐标
double
y=pen.getY(); //保存当前的Y坐标
pen.fd(200).rt(45);
pen.fd(200).rt(135);
pen.line(x,y); //画对角线
return0;
}
例题13.3:有一个半径是100的圆,在里面画一个内切的正5边形。


分析:如果要计算五边形的边长、边与圆的角度关系等,是非常复杂的。考虑能不能从圆心出发呢?



上图的绿色线很容易画,把它们的端点连接起来就可以了。

样例程序13.3
图形
//程序名:样例程序13.1
//作者:
gogo
//2015.12.22

int
main()
{
// showXY();
pen.o(100);
pen.c(3);

//五边形的第一个顶点的坐标
pen.fd(100);
double
oldX=pen.x();
double
oldY=pen.y();
pen.bk(100).rt(360.0/5);

for(int
i=0;
i<5;
i++)
{
//得到五边形下一顶点的新位置坐标
pen.fd(100);
double
newX=pen.x();
double
newY=pen.y();

//画五边形的边
pen.c(1).line(oldX,oldY).c(3);
//回到原点
pen.move(0,0).rt(360.0/5);

//更新下次画的顶点位置坐标
oldX=newX;
oldY=newY;
}
return0;
}
关键的技巧是

(1)要记录上一个顶点、当前顶点的坐标。

(2)程序中每次回到原点是用:move(0,0)。
【练习】
一、填空题。根据题目的任务,填空完善程序。

题目
程序
练习13.1剖分多边形。



int
main()
{
int
N=8;
for(int
i=0;
i<N;
i++)
{
pen.fd(50).rt(360.0/N);
int
x=p.getX();

int y=p.getY();
pen.line(
, ).line(
, );
}
return0;
}

二、编程题

练习13.2:编程画出下面图形。



【学习目标】
(1) 掌握getX和getY函数。
(2) 学会用用doubl型变量记录(保存)坐标。

【拓展知识】
1)勾股定理
A(x1,y1)和B(x2,y2)两点的距离(连线长度)=
sqrt ((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );

思考题
画边长是100的正六边形的外接圆。
求边长是100的正六边形的面积。

2)扩展命令
坐标类扩展命令2
pen.angle( angle );
笔方向(度数)。不经过旋转,直接设置笔的方向。
例:pen.angle( 90 );则笔向右。
pen.getAngle();
取得笔的当前方向。
例:double a = pen.getAngle();
pen.save( );
保存“笔”的当前状态,即保存位置、方向等信息。
pen.load();
恢复“笔”的以前保存的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: