一种平显多线宽三角形无失真的绘制方法与流程

文档序号:18481805发布日期:2019-08-20 23:49阅读:506来源:国知局
一种平显多线宽三角形无失真的绘制方法与流程

本发明涉及一种平显多线宽三角形无失真的绘制方法,属于图形显示技术领域。



背景技术:

三角形是组成计算机图形最基本的元素之一,在很多显示系统中需要绘制任意线宽的三角形。常见的多线宽三角形的绘制方法是绘制三条多线宽的直线,由多线宽直线拼接得到多线宽的三角形。此方法实现简单方便,但是三角形的三个顶点会有严重的失真现象存在。当显示背景较亮时,需要给多线宽三角形加黑边,此时三角形顶点的失真现象更加明显。如何快速简单的绘制无失真多线宽三角形成为重要的研究内容。



技术实现要素:

本发明所要解决的技术问题在于解决绘制多线宽三角形顶点存在失真的问题,提供一种适用于任意线宽的三角形的无失真绘制方法,实现方式相对简单,便于硬件实现。

本发明采用以下技术方案:

一种平显多线宽三角形无失真的绘制方法,将多线宽三角形根据外侧三个顶点和内侧三个顶点划分为6个独立的填充三角形,每一个填充三角形采用水平直线填充的方法实现。6个填充三角形拼接得到一个顶点无失真的多线宽三角形。

多线宽三角形的外侧三个顶点分别是(xmin,ymin),(xmid,ymid),(xmax,ymax),三角形三边线宽是d。其中三角形的外侧三个顶点是按纵坐标大小排序的,纵坐标的最小值为ymin、中间值为ymid以及最大值为ymax;同时将纵坐标对应的x坐标也分别赋为xmin、xmid和xmax。当ymax=ymid时,满足xmax>xmid;当ymin=ymid时,满足xmin<xmid。

多线宽三角形的内侧三个顶点分别是(xmin′,ymin′),(xmid′,ymid′),(xmax′,ymax′)。其中三角形的内侧三个顶点是按纵坐标大小排序的,纵坐标的最小值为ymin′、中间值为ymid′以及最大值为ymax′;同时将纵坐标对应的x坐标也分别赋为xmin′、xmid′和xmax′。当ymax′=ymid′时,满足xmax′>xmid′;当ymin′=ymid′时,满足xmin′<xmid′。坐标系设置为水平向右为x轴正方向,垂直向下为y轴正方向。

多线宽三角形被划分为6个填充三角形,填充三角形1由顶点(xmin,ymin)、(xmin′,ymin′)和(xmid,ymid)构成;填充三角形2由顶点(xmin′,ymin′)、(xmid′,ymid′)和(xmid,ymid)构成;填充三角形3由顶点(xmid,ymid)、(xmid′,ymid′)和(xmax′,ymax′)构成;填充三角形4由顶点(xmid,ymid)、(xmax′,ymax′)和(xmax,ymax)构成;填充三角形5由顶点(xmin,ymin)、(xmax′,ymax′)和(xmax,ymax)构成;填充三角形6由顶点(xmin,ymin)、(xmin′,ymin′)和(xmax′,ymax′)构成。每个填充三角形由水平直线填充而成。

相比现有技术,本发明具有以下有益效果:

(1)本发明方法可以实现任意线宽三角形的无失真绘制,显示效果好,实用性强;

(2)本发明方法在保证多线宽三角形无失真绘制的同时,方法简单,无需复杂的比较计算,便于硬件实现;

(3)本发明方法在绘制多线宽三角形时不会产生重复的绘制点,减少缓存空间的占用,增强图形处理能力。

附图说明

图1为多线宽三角形划分示意图;

图2为多线宽三角形内侧顶点计算示意图;

图3a为多线宽三角形直线绘制仿真显示效果图;

图3b为本发明方法的多线宽三角形绘制仿真显示效果图。

具体实施方式

下面结合附图对本发明的技术方案进行详细说明:

本发明的思路是将多线宽三角形划分为6个填充三角形,通过分别绘制6个填充三角形得到无失真的多线宽三角形。本发明方法不仅适用于多线宽三角形,可以适用于任意线宽的多边形的绘制。

图1为多线宽三角形划分示意图。通常在绘制多线宽三角形时,给出三角形的线宽和三角形的外侧顶点,所以首先需要计算三角形的内侧顶点。假设多线宽三角形的外侧三个顶点分别是(xmin,ymin),(xmid,ymid),(xmax,ymax),三角形三边线宽是d。其中三角形的外侧三个顶点是按纵坐标大小排序的,纵坐标的最小值为ymin、中间值为ymid以及最大值为ymax;同时将纵坐标对应的x坐标也分别赋为xmin、xmid和xmax。当ymax=ymid时,满足xmax>xmid;当ymin=ymid时,满足xmin<xmid。坐标系设置为水平向右为x轴正方向,垂直向下为y轴正方向。

图2为多线宽三角形内侧顶点计算示意图。

步骤1:计算顶点(xmin′,ymin′)。θ12表示顶点(xmin,ymin)和(xmid,ymid)构成线段与x轴正向的夹角;θ13表示顶点(xmin,ymin)和(xmax,ymax)构成线段与x轴正向的夹角。比较θ12和θ13的大小:θ1_max=max(θ12,θ13),θ1_min=min(θ12,θ13)。

顶点(xmin,ymin)所在角的平分角为顶点(xmin′,ymin′)到顶点(xmin,ymin)的距离为l1,角平分线与垂直方向的夹角为β1,β1=α1+θ1_min-90°。x方向的变化量Δx1=l1×sinβ1,y方向的变化量Δy1=l1×cosβ1。当β1大于0°时,顶点(xmin′,ymin′)在顶点(xmin,ymin)的左下方;当β1小于0°时,顶点(xmin′,ymin′)在顶点(xmin,ymin)的右下方;当β1等于0°时,顶点(xmin′,ymin′)在顶点(xmin,ymin)的正下方。所以xmin′=xmin-Δx1,ymin′=ymin+Δy1。

步骤2:计算顶点(xmid′,ymid′)。θ12表示顶点(xmin,ymin)和(xmid,ymid)构成线段与x轴正向的夹角;θ23表示顶点(xmid,ymid)和(xmax,ymax)构成线段与x轴正向的夹角。比较θ12和θ23的大小:θ2_max=max(θ12,θ23),θ2_min=min(θ12,θ23)。

顶点(xmid,ymid)所在角的平分角为顶点(xmid′,ymid′)到顶点(xmid,ymid)的距离为l2,角平分线与水平方向的夹角为β2,x方向的变化量Δx2=l2×cosβ2y方向的变化量Δy2=l2×sinβ2。所以

步骤3:计算顶点(xmax′,ymax′)。θ13表示顶点(xmin,ymin)和(xmax,ymax)构成线段与x轴正向的夹角;θ23表示顶点(xmid,ymid)和(xmax,ymax)构成线段与x轴正向的夹角。比较θ13和θ23的大小:θ3_max=max(θ13,θ23),θ3_min=min(θ13,θ23)。

顶点(xmax,ymax)所在角的平分角顶点(xmax′,ymax′)到顶点(xmax,ymax)的距离为l3,角平分线与水平向右方向的夹角为β3,x方向的变化量Δx3=l3×cosβ3,y方向的变化量Δy3=l3×sinβ3。所以xmax′=xmax+Δx3,ymax′=ymax-Δy3。

步骤4:绘制6个填充三角形,每个填充三角形采用水平直线填充的方式绘制而成。

图3a为多线宽三角形直线绘制仿真显示效果图,图3b为本发明方法的多线宽三角形绘制仿真显示效果图,通过对比可以看出,本发明方法的显示效果比直线绘制的显示效果更好,多线宽三角形顶点无明显失真。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1