题目
思路
其它几个点比较简单,这里只解决画出阴影面积的问题
关于控制台图形的绘制,可以参考Milo的编程 - 如何用 C 语言画这个图(分享自知乎网)
- 首先根据传入的AB的长度m,根据等腰三角形,我们求得BC中点和A的连线,即是三角形ABC的高height,这也是一个关键的数据
- 求得height后,可得BC边的长度为2*height
- 我们要画圆,因此需要圆心坐标和半径长度,弧ABE所在的圆心为(0,height),半径为AB的长度m。
ACD所在的圆的圆心是AC的中点,求得圆心坐标为(BC*(3/4),height/2),半径为1/2AC的长度,即m/2
解决问题
源码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
//在drawTriangle里根据m的值计算所需画布宽高
int w;//画布宽
int h;//画布高
//判断坐标在三角形内
int inTriangle(int x,int y,double height){
return abs((int)(x-floor(height+0.5))) <= y && y < height;
}
//判断坐标在ABE所在的圆内
int inCircleABE