用于视线效果,不可见区域的阴影美化,将尖锐的阴影边缘柔和成圆角。
1. 取3个点A,B,C
2. 计算得到射线向量BA, BC
3. 射线BA, BC分别从B点沿射线方向,取若干距离的点作为垂线坐标点
4. 分别以垂点做垂线,并计算垂线的斜率
5. 已知一点与斜率,分别得出二者垂线的方程并计算两条垂线的交点。将交点设为圆心,半径是圆心到垂点的距离。
6. 确定了圆心之后,两个垂点之间的短弧,即是圆角。
7. 判断垂线的角度,取点移动的方向是逆时针。假如A点为逆时针的起始点,则从BA的向量角度递增至BC,逐间隔计算圆上的点
8. 根据圆心,半径,角度,逆时针逐间隔计算圆上的点
9. 将得到的点连接,即为圆角点。
void convertToCircle(std::vector<Vec2>& pointList)
{
std::vector<Vec2> vecNewPoint;
std::vector<Vec2>::iterator itrPt;
std::vector<Vec2>::iterator itrPtPre;
std::