OpenGL三角形绘制平滑线

整体思路:

  • 根据给定的点P,做插值均分,得到N个P点
  • 将N个P点进行求角平分线(TB)
  • 然后再角平分线(TB)的正反方向进行D距离的拓宽,得到PT,PB,算出T点、B点
  • 将所有的T点、B点进行连接,使用triangle strip进行绘制

关于插值均分算法,参考:


上图是将2个输入点之间插入了2个均分点,也就是将一条线段切成了3份。

仔细观察绘制结果,会发现三角形会相互叠加,顶点比较乱。

优化方案:

  • 对原始的点P进行二阶贝塞尔,将P2变为贝塞尔曲线t=0.5的位置,这样所可能会让曲线偏离设定的目标点。


  • 优化后,线条的确好了很多,但是转角处还是不够顺滑


  • 同理,对生成的T点、B点进行再次进行贝塞尔曲线t=0.5的优化


经过上述优化,基本上整体已经非常平滑了,基本满足使用需求,但是当出现大幅度的锐角弯时,还是有点问题,这个只能从制作层面避免啦,暂时没有好的优化方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容