用C++如何画三角形和角平分线呢?这里提供了一个解决方案,以下是效果:
再看这C++代码:- /*
- 本程序演示了如何画一根角平分线
- */
- #include "sprites.h" //包含C++精灵库
- Sprite rocket; //建立角色叫rocket
- int main(){ //主功能块
- g_screen->xygrid(50); //显示坐标格子
- Point A{-150,-150};
- Point B{200,0};
- Point C{0,250};
- //连接三个顶点画三角形
- rocket.pu().color(0).go(A).pd().go(B).go(C).go(A);
- //算出角ABC的大小,然后在下面写几个字
- float jABC = get_angle(A,B,C); //求出角ABC的大小
- std::string s = "角ABC大小是:" + std::to_string(jABC);
- rocket.pu().go(0,-200);
- rocket.write(s,"center",{"","30","normal"});
- //画角平分线,先到达B点,然后朝向C点,左转角ABC的一半,出发!就把角平分线画好了。
- rocket.go(B).heading(C).left(jABC/2).color(33).pd().fd(300);
- //去写上面几个字
- rocket.pu().go(0,300);
- std::string s2 = "C++精灵库画角平分线";
- rocket.write(s2,"center",{"","36","normal"} );
- rocket.hide().done();
- return 0;
- }
复制代码 这段程序其实是用一个叫“C++精灵库”的工具写的,目的是画一个三角形,再画出角ABC的角平分线。说白了,就是给你画图,还能写字展示结果。
程序首先用g_screen->xygrid(50)命令,让窗口屏幕上显示一个带网格的坐标系(每格是50单位),这样你看得清楚点在哪里。
然后,程序定义了三个坐标点,Point 这是用来定义坐标点的类,就像int用来定义整数一样。
代码中设置了A、B、C三个点的坐标,分别是
- A点:在左下角大概(-150,-150)
- B点:右边(200,0)
- C点:上方(0,250)
接着用一行代码,嗖地一声把三角形来好了,这行代码是:- //连接三个顶点画三角形
- 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++精灵库不鬼为一个较好的绘图工具箱啊。我录了视频在这里:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |