利索能及
我要发布
收藏
专利号: 2019113651499
申请人: 南京师范大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-08-18
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种顾及线宽一致性的矢量地图线符号开放尖角形箭头绘制方法,其特征在于,包括下列步骤:步骤1、对矢量线要素的坐标序列进行初始化,设置以像素为单位的屏幕线宽,设置起点和终点处是否绘制开放尖角形箭头;

步骤2、构建矢量线要素的世界坐标系和屏幕坐标系之间的转换规则,通过此规则将屏幕线宽转换为世界坐标系的线宽,根据此世界坐标系线宽:顺序遍历矢量线要素的每个坐标,由线生成三角形集合,其中每个三角形的每个顶点都具有沿线走向的U值和垂直线走向的V值,并且每个顶点还具有一个缩放方向D值;对矢量线要素的起点和终点分别进行膨胀操作和协议标记;

所述矢量线要素的起点膨胀操作:矢量线要素的起点逆着线走向扩张两个线宽,再垂直于线走向分别向两侧扩张两个线宽,由此形成两个点;矢量线要素的起点顺着线走向扩张两个线宽,再垂直于线走向分别向两侧扩张两个线宽,由此再形成两个点;此四个点构成以四个线宽为边长的正方形,即起点处的膨胀正方形;

所述矢量线要素的终点膨胀操作:矢量线要素的终点逆着线走向扩张两个线宽,再垂直于线走向分别向两侧扩张两个线宽,由此形成两个点;矢量线要素的终点顺着线走向扩张两个线宽,再垂直于线走向分别向两侧扩张两个线宽,由此再形成两个点;此四个点构成以四个线宽为边长的正方形,即终点处的膨胀正方形;

所述矢量线要素的起点协议标记:起点膨胀正方形中逆着线方向膨胀出来的两个点,其U值均为‑2.0;起点膨胀正方形中顺着线方向膨胀出来的两个点,其U值均为‑1.0;起点膨胀正方形中位于线走向右侧的两个点V值为0,左侧的两个点V值为1;

所述矢量线要素的终点协议标记:终点膨胀正方形中逆着线方向膨胀出来的两个点,其U值均为‑10.0;终点膨胀正方形中顺着线方向膨胀出来的两个点,其U值均为‑11.0;终点膨胀正方形中位于线走向右侧的两个点V值为0,左侧的两个点V值为1;

区分起点和终点:线要素中既不是起点也不是终点部分的U值均为大于等于0,起点和终点部分的膨胀正方形U值均小于0,其中起点处的U值大于等于‑2.0,而终点处的U值小于‑

2.0;

步骤3、组装GPU着色器的状态协议:该状态协议包括两个层次,一个是顶点层,包括U值、V值、缩放方向D值,另一个是结构层,包括最大线宽M值、地图比例缩放S值、起点标记CB值、终点标记CE值;

A.最大线宽M值是世界坐标系的线宽;

B.地图比例缩放S值是随着地图比例尺缩放动态更新的比例值;

C.起点标记CB值和终点标记CE值:是对应于是否绘制开放尖角形箭头的浮点数值,小于0表示不绘制开放尖角形箭头,大于等于0则表示绘制开放尖角形箭头;

D.状态协议:按照U值、V值、D值、M值、S值、CB值、CE值进行组织,其中U值和V值是一维浮点数、D值是二维浮点数、M值和S值是一维浮点数、CB值和CE值也是一维浮点数,将U值、V值、D值按序组织成四维向量,将M值、S值、CB值、CE值按序组织成四维向量,最终形成的状态协议由两个向量构成:U‑V‑D四维向量和M‑S‑CB‑CE四维向量;

步骤4、在CPU中获取初始的世界坐标系线宽和地图比例尺缩放系数,并分别按照状态协议中的M值、S值、CB值和CE值传递到GPU中,由此在GPU着色器中解析状态协议中的U值、V值、D值、M值、S值、CB值、CE值,动态计算当前开放尖角形箭头需要绘制的像素位置,对起点和终点进行开放尖角形箭头腐蚀操作,并完成绘制:A.将起点处的膨胀正方形的四个点U值统一加上1.0,形成一个0.0到‑1.0的区间;将终点处的膨胀正方形的四个点U值统一加上10.0,形成一个0.0到‑1.0的区间;

B.根据V值将膨胀正方形分为上下两个部分,如果V≤0.5则处于下半部分,如果V>0.5则处于上半部分;

B1.上半部分的腐蚀操作:

首先按照‑0.5的斜率,对V>‑0.5U的部分进行腐蚀;

剩下的部分,继续按照‑0.5的斜率,对V<‑0.5U‑0.25的部分进行腐蚀,得到的腐蚀区域中,对‑0.75≤U≤‑0.5的部分进行填补;完成上半部分的腐蚀操作;

B2.下半部分的腐蚀操作:

首先按照0.5的斜率,对V>0.5U的部分进行腐蚀;

剩下的部分,继续按照0.5的斜率,对V>0.5U‑0.25的部分进行腐蚀,得到的腐蚀区域中,对‑0.75≤U≤‑0.5的部分进行填补;完成下半部分的腐蚀操作;

通过上下两个部分的腐蚀操作,绘制开放尖角形箭头。

2.根据权利要求1所述的顾及线宽一致性的矢量地图线符号开放尖角形箭头绘制方法,其特征在于,所述步骤2中,沿线走向的U值根据每个顶点沿着线要素的距离计算获得,其中起点扩张出来的两个顶点U值均为0,终点扩张出来的两个顶点U值均为整条线的长度除以线宽,其他点扩张出来的两个顶点U值均为长度累积值除以线宽。

3.根据权利要求1所述的顾及线宽一致性的矢量地图线符号开放尖角形箭头绘制方法,其特征在于,所述步骤2中,垂直线走向的V值根据每个顶点向两侧扩张的距离计算获得,线要素上的每个点,其扩张出来的两个顶点位于线走向左侧的V值为1,位于右侧的V值为0。

4.根据权利要求1所述的顾及线宽一致性的矢量地图线符号开放尖角形箭头绘制方法,其特征在于,所述步骤2中,顶点缩放方向的D值是一个二维向量,该二维向量的长度根据扩张顶点与原始点之间的距离计算获得。