一种无失真三角形的区域划分绘制方法转让专利

申请号 : CN202211609552.3

文献号 : CN115661298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李涵夏伟杰郭元浩李文强张川周钰致刘伟强周建江苏霖

申请人 : 南京航空航天大学

摘要 :

本发明公开了一种无失真三角形的区域划分绘制方法,采用三角形相邻两边作为不共线的非零向量来线性组合表示任一像素点与两个非零向量公共点构成的像素向量,通过线性组合系数和像素向量在三角形各边上的投影大小对三角形进行区域划分,不同区域采用不同的距离反走样完成三角形绘制。本发明能够解决现有技术中三角形各边在小角度情况下会出现绘制异常、反走样显示效果差的技术问题,可以实现三角形的无失真绘制,显示效果好。

权利要求 :

1.一种无失真三角形的区域划分绘制方法,其特征在于,所述区域划分绘制方法包括以下步骤:S1,令待绘制的三角形的三个顶点分别为点O、点A和点B;采用三角形相邻两边对应的不共线的非零向量 和 的线性组合表示任一像素点P与两个非零向量公共点构成的像素向量S2,通过像素点的像素向量对应的线性组合系数k和t对三角形进行区域划分,将其划分成以下四个绘制区域:三角形内部区域、OA边所属区域、AB边所属区域和OB边所属区域;

S3,根据OA边所属区域、AB边所属区域和OB边所属区域的像素点的像素向量在各自对应的三角形边上的投影大小,计算得到像素点与对应边的距离值distance;采用下述公式计算得到像素点的透明度alpha:alpha=(2‑distance)/2;

对不同区域采用不同的距离反走样完成三角形绘制;其中,三角形内部区域的像素点的透明度取值为1;

对不同区域采用不同的距离反走样完成三角形绘制的过程包括以下步骤:遍历每个像素点,计算得到每个像素点的像素值G*:

G*=G·alpha

式中,G为像素点的初始像素值。

2.根据权利要求1所述的无失真三角形的区域划分绘制方法,其特征在于,步骤S2中,采用下述公式计算得到像素点P的像素向量对应的线性组合系数k和t:式中,(x1,y1)是点O的坐标值,(x2,y2)是点A的坐标值,(x3,y3)是点B的坐标值,(xs,ys)是像素点P的坐标值。

3.根据权利要求2所述的无失真三角形的区域划分绘制方法,其特征在于,步骤S2中,通过像素向量对应的线性组合系数k和t对三角形进行区域划分的过程包括以下子步骤:通过k、t的大小将三角形分为四个绘制区域:

若像素向量对应的线性组合系数满足以下条件:t<0,则像素点属于第一绘制区域,对应的三角形边为OA边;

若像素向量对应的线性组合系数满足以下条件:k<0,则像素点属于第二绘制区域,对应的三角形边为AB边;

若像素向量对应的线性组合系数满足以下条件:t+k>1,则像素点属于第三绘制区域,对应的三角形边为AB边;

若像素向量对应的线性组合系数满足以下条件:0≤t≤1&&0≤k≤1&&0≤t+k≤1,则像素点属于第四绘制区域,对应三角形内部区域。

4.根据权利要求3所述的无失真三角形的区域划分绘制方法,其特征在于,步骤S3中,当像素点P位于第一绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:式中,

5.根据权利要求3所述的无失真三角形的区域划分绘制方法,其特征在于,步骤S3中,当像素点P位于第二绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:式中,

6.根据权利要求3所述的无失真三角形的区域划分绘制方法,其特征在于,步骤S3中,当像素点P位于第二绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:式中,

7.根据权利要求2所述的无失真三角形的区域划分绘制方法,其特征在于,对不同区域采用不同的距离反走样完成三角形绘制的过程还包括以下步骤:将已知像素点的颜色信息带入下述关系式,以确定遍历到的像素点的未知颜色信息:color_p=k·(color_a‑color_o)+t·(color_b‑color_o)+color_o式中,color_p是像素点P的颜色信息,color_a、color_o和color_b分别是点A、点O和点B的颜色信息;

乘以透明度计算得到片元的颜色信息fragment_color为:fragment_color=color_p·alpha。

说明书 :

一种无失真三角形的区域划分绘制方法

技术领域

[0001] 本发明涉及图形显示技术领域,具体而言涉及一种无失真三角形的区域划分绘制方法。

背景技术

[0002] 三角形是组成计算机图形最基本的元素之一,在很多显示系统中需要绘制任意类型的三角形。常见的三角形绘制算法会对三角形三个顶点的纵坐标大小进行判断将顶点纵坐标较小的顶点记为min点,纵坐标顶点较大的顶点记为max点,剩余顶点记为mid点,引出一条经过mid点的水平线将三角形分为上三角形和下三角形,从min点所在行开始对三角形进行逐行扫描,通过水平线与三角形边的交点的横坐标与像素点的横坐标进行大小比较确定像素点是否在三角形内部。在上三角形部分,交点即为水平线与min‑mid、min‑max边的交点;在下三角形部分,交点即为水平线与mid‑max、min‑max边的交点。反走样部分采用多重采样算法。在三角形各边处于小角度的情况下,该算法绘制出的三角形锯齿现象严重,且在上三角形与下三角形的衔接处会出现填充异常的问题。如何高效、简便地完成三角形的绘制成为重要的研究内容。

发明内容

[0003] 为了解决目前常见的三角形绘制算法会造成上下三角形衔接处填充异常以及反走样效果差的问题,本发明提供一种无失真三角形的区域划分绘制方法,适用于任意类型三角形,便于硬件实现。
[0004] 为实现上述目的,本发明采用以下技术方案:
[0005] 一种无失真三角形的区域划分绘制方法,所述区域划分绘制方法包括以下步骤:
[0006] S1,令待绘制的三角形的三个顶点分别为点O、点A和点B;采用三角形相邻两边对应的不共线的非零向量 和 的线性组合表示任一像素点P与两个非零向量公共点构成的像素向量
[0007] S2,通过像素点的像素向量对应的线性组合系数k和t对三角形进行区域划分,将其划分成以下四个绘制区域:三角形内部区域、OA边所属区域、AB边所属区域和OB边所属区域;
[0008] S3,根据OA边所属区域、AB边所属区域和OB边所属区域的像素点的像素向量在各自对应的三角形边上的投影大小,计算得到像素点与对应边的距离值distance;采用下述公式计算得到像素点的透明度alpha:
[0009] alpha=(2‑distance)/2;
[0010] 对不同区域采用不同的距离反走样完成三角形绘制;其中,三角形内部区域的像素点的透明度取值为1。
[0011] 为优化上述技术方案,采取的具体措施还包括:
[0012] 进一步地,步骤S2中,采用下述公式计算得到像素点P的像素向量对应的线性组合系数k和t:
[0013]
[0014] 式中,(x1,y1)是点O的坐标值,(x2,y2)是点A的坐标值,(x3,y3)是点B的坐标值,(xs,ys)是像素点P的坐标值。
[0015] 进一步地,步骤S2中,通过像素向量对应的线性组合系数k和t对三角形进行区域划分的过程包括以下子步骤:
[0016] 通过k、t的大小将三角形分为四个绘制区域:
[0017] 若像素向量对应的线性组合系数满足以下条件:t<0,则像素点属于第一绘制区域,对应的三角形边为OA边;
[0018] 若像素向量对应的线性组合系数满足以下条件:k<0,则像素点属于第二绘制区域,对应的三角形边为AB边;
[0019] 若像素向量对应的线性组合系数满足以下条件:t+k>1,则像素点属于第三绘制区域,对应的三角形边为AB边;
[0020] 若像素向量对应的线性组合系数满足以下条件:0≤t≤1&&0≤k≤1&&0≤t+k≤1,则像素点属于第四绘制区域,对应三角形内部区域。
[0021] 进一步地,步骤S3中,当像素点P位于第一绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:
[0022]
[0023] 式中,
[0024] 进一步地,步骤S3中,当像素点P位于第二绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:
[0025]
[0026] 式中,
[0027] 进一步地,步骤S3中,当像素点P位于第二绘制区域时,采用下述公式计算得到像素点与对应边的距离值distance:
[0028]
[0029] 式中,
[0030] 进一步地,对不同区域采用不同的距离反走样完成三角形绘制的过程包括以下步骤:
[0031] 遍历每个像素点,计算得到每个像素点的像素值G*:
[0032] G*=G·alpha
[0033] 式中,G为像素点的初始像素值。
[0034] 进一步地,对不同区域采用不同的距离反走样完成三角形绘制的过程还包括以下步骤:
[0035] 将已知像素点的颜色信息带入下述关系式,以确定遍历到的像素点的未知颜色信息:
[0036] color_p=k·(color_a‑color_o)+t·(color_b‑color_o)+color_o
[0037] 式中,color_p是像素点P的颜色信息,color_a、color_o和color_b分别是点A、点O和点B的颜色信息;
[0038] 乘以透明度计算得到片元的颜色信息fragment_color为:
[0039] fragment_color=color_p·alpha。
[0040] 本发明的有益效果是:
[0041] 第一,本发明的无失真三角形的区域划分绘制方法,可以实现任意类型三角形的无失真绘制,显示效果好,实用性强;
[0042] 第二,本发明的无失真三角形的区域划分绘制方法,解决了目前将三角形分为上下三角形进行填充造成上下三角形衔接处填充异常的问题,对于片元信息的计算进行了优化;
[0043] 第三,本发明的无失真三角形的区域划分绘制方法,大大优化了三角形的反走样显示效果。

附图说明

[0044] 图1是本发明实施例的无失真三角形的区域划分绘制方法原理图。
[0045] 图2为采用上下三角形方式绘制的各类型三角形仿真图。
[0046] 图3为采用本发明实施例的无失真三角形的区域划分绘制方法绘制的各类型三角形仿真图。

具体实施方式

[0047] 现在结合附图对本发明作进一步详细的说明。
[0048] 需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
[0049] 本实施例公开了一种无失真三角形的区域划分绘制方法,根据平面内任一向量都可以用其它两个不共线的非零向量的线性组合表示的理论,用三角形相邻两边作为不共线的非零向量来线性组合表示任一像素点与两个非零向量公共点构成的像素向量,通过线性组合系数和像素向量在三角形各边上的投影大小对三角形进行区域划分,不同区域采用不同的距离反走样完成三角形绘制。具体地,所述区域划分绘制方法包括以下步骤:
[0050] S1,令待绘制的三角形的三个顶点分别为点O、点A和点B;采用三角形相邻两边对应的不共线的非零向量 和 的线性组合表示任一像素点P与两个非零向量公共点构成的像素向量
[0051] S2,通过像素点的像素向量对应的线性组合系数k和t对三角形进行区域划分,将其划分成以下四个绘制区域:三角形内部区域、OA边所属区域、AB边所属区域和OB边所属区域。
[0052] S3,根据OA边所属区域、AB边所属区域和OB边所属区域的像素点的像素向量在各自对应的三角形边上的投影大小,计算得到像素点与对应边的距离值distance;采用下述公式计算得到像素点的透明度alpha:
[0053] alpha=(2‑distance)/2;
[0054] 对不同区域采用不同的距离反走样完成三角形绘制;其中,三角形内部区域的像素点的透明度取值为1。
[0055] 图1为无失真三角形的区域划分绘制方法原理图。通常在绘制三角形时,给出三角形的三个顶点O(x1,y1),A(x2,y2),B(x3,y3)。根据平行四边形法则,相邻两边的向量和是两向量的公共顶点与对点相连的对角线,即 平面内任一向量都可以用其它两个不共线的非零向量的线性组合表示,对于平面内的任意一点P与点O构成的向量,均可以由已知向量 和向量 来表示,只需要控制 的系数即可,即
以像素点P(xs,ys)为例,向量 向量 向量
存在系数k、t使得 将已知的坐标信息带入可联立
以下方程组:
[0056]
[0057] 用已知信息来表示k、t可得到:
[0058]
[0059] 判断像素点是否在平行四边形内部时k、t只需要满足以下条件即可:
[0060]
[0061] 判断像素点是否在三角形内部时即只需要在判断是否在平行四边形内部的基础上加上一个附加条件:
[0062]
[0063] 这样即可保证像素点落在三角形的内部。
[0064] 通过k、t的大小将三角形分为四个绘制区域,t<0部分即为区域1,k<0部分即为区域2,t+k>1部分即为区域3,0≤t≤1&&0≤k≤1&&0≤t+k≤1部分即为区域4。
[0065] 当像素点位于区域4时,即像素点在三角形的内部,像素点的透明度为alpha=1。当像素点位于区域1时,计算出向量 在向量 上的投影
并根据 的值确定出distance的大小,
当 时,distance为点P到点O的距离即 当
时,distance为点P到点A的距离 当
时,distance为点P到边OA的距离即 根
据distance计算出alpha=(2‑distance)/2。
[0066] 当 像 素 点 位 于 区 域 2 时 ,计 算 出 向 量 在 向 量 上的 投 影并根据 的值确定出distance的大小,当
时,distance为点P到点O的距离即 当
时,distance为点P到点B的距离 当 时,distance
为点P到边OB的距离即 根据distance计算出alpha
=(2‑distance)/2。
[0067] 当 像 素 点 位 于 区 域 3 时 ,计 算 出 向 量 在 向 量 上的 投 影并根据 的值确定出distance的大小,
当 时,distance为点P到点A的距离即 当
时 ,distance为点P到点B的距离 当
时,distance为点P到边AB的距离即
根据distance计算出alpha=(2‑distance)/2。
[0068] 在计算像素点颜色信息的时候可以继续沿用关系式 将已知像素点的颜色信息带入关系式即可确定遍历到的像素点的未知颜色信息:
[0069] color_p=k·(color_a‑color_o)+t·(color_b‑color_o)+color_o
[0070] 乘以透明度即可得到片元的颜色信息:
[0071] fragment_color=color_p·alpha
[0072] 遍历到的每个片元的颜色信息都由该方法确定,完成无失真三角形的绘制。
[0073] 本实例设置了一组不同类型的三角形参数,分别采用上下三角形方式绘制和本实施例的区域划分绘制方法绘制,并将绘制的三角形子图按三角形参数编号自上而下依次排序。图2为采用上下三角形方式绘制的各类型三角形仿真图,图3为采用本实施例的区域划分绘制方法绘制的各类型三角形仿真图,图2和图3的子图自上而下一一对应。可以看出,分成上下三角形两个部分进行绘制的算法采用水平线与各边交点的横坐标作为判断像素点是否在三角形内部的约束条件,因为各边的斜率不一致所以需要分为上下两个三角形,这就使得需要对上下两个三角形分别进行逐行扫描,对上下三角形的衔接处进行重复扫描,会导致上下三角形衔接处出现绘制异常的问题。本绘制算法以向量加法原理为基理,通过计算向量加法的线性组合系数和来判断像素点与三角形的位置关系,很好地避免了将三角形分为上下两个部分分别进行扫描导致衔接处重复扫描的问题。通过对比可以看出,本绘制算法的显示效果比分为上下三角形进行绘制的显示效果更好,解决了上下三角形衔接处绘制异常的问题,且反走样效果更优。
[0074] 以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。