线宽处理思路
核心思想为使用填充模式的多边形来模拟线宽
注:圆弧暂只支持等宽
绘制思路:
-
若是直线:
点线宽大于0,则沿直线垂直方向平移0.5线宽得到两点,否则直接取这个点。处理好后,直线有3种结果:两个点(点起末线宽均为0时),三个点(点起末线宽有一个为0时),4个点(点起末线宽均不为0)。 -
若是弧线(只处理等宽的圆弧)
若不等宽或宽度为0,直接原样输出。
否则,将圆弧半径回减一半线宽得到两段圆弧,将圆弧散列成点,opengl应该不支持凹多边形,所以采用三角化的方式绘制。 -
拐角的处理
只处理直线之间的拐角拐角中的两条直线线宽包含0,不用处理
若线宽大于0,求出外围线交点,然后用交点替换原来的两个点即可,如下图所示,
AB 与A1B1相交于O1,
CD 与C1D1相交于O2,
然后点B替换成O1,点C替换成O2;A1替换成O1,D1替换成O2。
AutoCAD多义线线宽示例
全部都是等宽的直线
非等宽直线
直线、圆弧混合