找回密码
 立即注册
首页 业界区 业界 火箭一冲,三角形画好了,再一冲角平分线画好了 ...

火箭一冲,三角形画好了,再一冲角平分线画好了

珠尿娜 昨天 21:20
用C++如何画三角形和角平分线呢?这里提供了一个解决方案,以下是效果:
1.png

再看这C++代码:
  1. /*
  2.    本程序演示了如何画一根角平分线
  3. */
  4. #include "sprites.h"  //包含C++精灵库
  5. Sprite rocket;       //建立角色叫rocket
  6. int main(){        //主功能块
  7.    g_screen->xygrid(50);  //显示坐标格子
  8.    Point A{-150,-150};
  9.    Point B{200,0};
  10.    Point C{0,250};
  11.    //连接三个顶点画三角形
  12.    rocket.pu().color(0).go(A).pd().go(B).go(C).go(A);
  13.    //算出角ABC的大小,然后在下面写几个字
  14.    float jABC  = get_angle(A,B,C);   //求出角ABC的大小
  15.    std::string s = "角ABC大小是:" + std::to_string(jABC);   
  16.    rocket.pu().go(0,-200);
  17.    rocket.write(s,"center",{"","30","normal"});
  18.    //画角平分线,先到达B点,然后朝向C点,左转角ABC的一半,出发!就把角平分线画好了。
  19.    rocket.go(B).heading(C).left(jABC/2).color(33).pd().fd(300);
  20.    //去写上面几个字
  21.    rocket.pu().go(0,300);
  22.    std::string s2 = "C++精灵库画角平分线";
  23.    rocket.write(s2,"center",{"","36","normal"} );
  24.    rocket.hide().done();  
  25.    return 0;
  26. }
复制代码
这段程序其实是用一个叫“C++精灵库”的工具写的,目的是画一个三角形,再画出角ABC的角平分线。说白了,就是给你画图,还能写字展示结果。
程序首先用g_screen->xygrid(50)命令,让窗口屏幕上显示一个带网格的坐标系(每格是50单位),这样你看得清楚点在哪里。
然后,程序定义了三个坐标点,Point 这是用来定义坐标点的类,就像int用来定义整数一样。
代码中设置了A、B、C三个点的坐标,分别是

  • A点:在左下角大概(-150,-150)
  • B点:右边(200,0)
  • C点:上方(0,250)
接着用一行代码,嗖地一声把三角形来好了,这行代码是:
  1. //连接三个顶点画三角形
  2.    rocket.pu().color(0).go(A).pd().go(B).go(C).go(A);
复制代码
“rocket”这个角色(其实是个能动的笔)先“抬笔”,换成红色,跑到A点落笔,连着画到B点,接着C点,最后回到A点,这样就画出了一个三角形。代码中的color(0)就是设置画笔为红色的意思。为什么0表示红色呢?因为采用的是HSV色彩模式,0表示色相,所以就表示了红色。
接着程序通过get_angle这个魔法命令算出了角ABC的大小。

关键来了!先让“rocket”跑到B点,再让它“朝向”C点,也就是面朝角的一边。然后让它左转角ABC的一半(角平分线就是把角分成两半的线),再用橙色笔划出去300个单位,这样角平分线就画出来了。
最后“rocket”跑到屏幕上方(0,300)写上“C++精灵库画角平分线”几个字,漂亮地结尾。程序把“rocket”藏起来,结束画面。
这程序就是用“rocket”在一个有坐标网格的画板上,画出三角形,计算并显示角度,再用一条线把角分成两半,同时写出提示字,演示角平分线怎么画。逻辑清楚,步骤一步步来,容易理解。看来C++精灵库不鬼为一个较好的绘图工具箱啊。我录了视频在这里:


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册