之前用到GDI+绘制过圆弧,因为CDC类封装有绘制圆弧的函数所以很方便,只需要计算它所需的参数就行;但是用GDI+绘图效率不高,所以现在又改成了用OpenGL实现,但是OpenGL没封装有画圆弧函数,所以只能自己动手写。
1. 三点可以求出圆心O, 半径R
2. 根据这三个点还可以求出绘制圆弧的起始角度startAngle、扫面角度sweepAngle(跨角),如:
//圆弧扫描角、起始角
//计算弧长 L = ⊙ * r (弧度 * 半径)
//判断中点B与圆心O是否在 AC 夹角内
//如果在 圆弧角度为 angle = A角 - C角; 如果不在 angle = 360 - (A角 - C角) 取反
void CToolN::AngleOfArc()
{
//跨角
O圆心 A起点 B中点 C终点
GLfloat OA = TheAngleFmTwoPoints(O, A, TRUE); //求两个点的角度0~360
GLfloat OB = TheAngleFmTwoPoints(O, B, TRUE);
GLfloat OC = TheAngleFmTwoPoints(O, C, TRUE);
GLfloat fMax = max(OA, OC);
GLfloat fMin = min(OA, OC);
if (OB > fMin && OB < fMax)
mSw