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

14 篇文章 14 订阅
14 篇文章 6 订阅

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

【坐标扩展命令】

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命令上连接图的原点OA点。原单坐标是(00),只要知道在知道A点的坐标就可以了。可以用getXgetY函数获得笔位置的坐标。程序如下:

样例程序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)      掌握getXgetY函数。

(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();

恢复“笔”的以前保存的状态。

 

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值