用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++精灵库不鬼为一个较好的绘图工具箱啊。我录了视频在这里: