在使用QT绘制时,有时候会需要用到箭头,这里写了关于如何计算箭头。
float x1 = begin.x();
float y1 = begin.y();
float x2 = end.x();
float y2 = end.y();
double angle = atan2(y2-y1,x2-x1);//计算线段的夹角
float l = 10;//箭头边的长度
float a = 0.5;//箭头与线段的夹角
float new_x1 = x2 - l * cos( angle - a);
float new_y1 = y2 - l * sin( angle - a);
float new_x2 = x2 - l * cos( angle + a);
float new_y2 = y2 - l * sin( angle + a);
绘制箭头需要三个顶点,将end和新计算出的两个点连起来就是一个箭头。
这里用一个图进行简单的描述,画的比较糙,凑活看。
A点是线段的终点(QT坐标系方向相反,倒着看就好),B,C是箭头的另外的两个端点。黄色的角代表线段与箭头的夹角,蓝色的角是线段的夹角。通过上面的计算公式可以得到箭头。