本申请涉及图形处理技术领域,具体而言,涉及一种扇形区域确定方法、装置及电子设备。
背景技术:
目前,在游戏引擎中,扇形区域具有广泛的应用,例如一些攻击技能的影响区域,某些npc(non-playercharacter,非玩家角色)的警戒范围等等。这些应用中都需要确定出扇形区域,并计算某个目标位置是否在扇形的区域内,以判断目标对象是否受到影响。
然而,判断一个目标位置是否在扇形区域内的操作是一个计算量较大的过程,如果扇形区域周围的预判区域过大,且预判区域内的所有的位置都参与计算,对系统资源来说,将是一个巨大且不必要的消耗,使系统对图形处理的效率降低。
技术实现要素:
有鉴于此,本申请实施例的目的在于提供一种扇形区域确定方法、装置及电子设备,以解决上述问题。
第一方面,本申请实施例提供一种扇形区域确定方法,所述方法包括:
获取初始轴对齐包围盒;
根据扇形的对称轴方向的弧度及扇形的角度得到所述扇形的弧度范围;
根据所述弧度范围得到所述扇形的两个端点坐标,并将所述端点坐标及所述扇形的圆心坐标合并到所述初始轴对齐包围盒中;
根据所述弧度范围得到所述扇形与参考坐标系的坐标轴的交点索引,其中,所述参考坐标系的原点为所述扇形的圆心;
根据所述交点索引查找所述扇形与所述坐标轴的交点坐标,并将所述扇形与所述坐标轴的交点坐标合并到所述初始轴对齐包围盒中,得到所述扇形的轴对齐包围盒;
根据所述轴对齐包围盒确定目标点是否位于扇形区域内。
可选地,根据所述弧度范围得到所述扇形与参考坐标系的坐标轴的交点索引,包括:
将所述扇形的弧度范围除以0.5π,得到所述扇形与所述坐标轴的交点索引范围;
遍历所述交点索引范围,得到所述交点索引范围中的整数,将所述整数对4取余,得到所述交点索引。
可选地,根据所述轴对齐包围盒确定目标点是否位于扇形区域内,包括:
判断目标点是否位于所述轴对齐包围盒中;
若所述目标点位于所述轴对齐包围盒中,判断所述目标点是否位于所述扇形所在的圆形区域中;
若所述目标点位于所述圆形区域中,判断所述目标点是否位于所述扇形区域中。
可选地,判断目标点是否位于所述轴对齐包围盒中,包括:
根据所述轴对齐包围盒得到所述目标点在所述参考坐标系中的横轴分量范围,判断所述目标点的横轴分量是否在所述横轴分量范围中;
根据所述轴对齐包围盒得到所述目标点在所述参考坐标系中的纵轴分量范围,判断所述目标点的纵轴分量是否在所述纵轴分量范围中;
当所述目标点的横轴分量在所述横轴分量范围中且纵轴分量在所述纵轴分量范围中时,判定所述目标点位于所述轴对齐包围盒中。
可选地,判断所述目标点是否位于所述扇形所在的圆形区域中,包括:
判断所述目标点的横轴分量的平方与纵轴分量的平方之和是否小于所述扇形半径的平方。
可选地,判断所述目标点是否位于所述扇形区域中,包括:
根据所述目标点位于所述参考坐标系中的坐标,得到所述目标点与所述参考坐标系的原点的连线的弧度;
判断所述弧度是否位于所述弧度范围中。
第二方面,本申请实施例还提供一种扇形区域确定装置,所述装置包括:
构建模块,用于构建扇形的轴对齐包围盒;
确定模块,用于根据所述轴对齐包围盒确定目标点是否位于扇形区域内。
可选地,所述构建模块具体用于:
获取初始轴对齐包围盒;
根据扇形的对称轴方向的弧度及扇形的角度得到所述扇形的弧度范围;
根据所述弧度范围得到所述扇形的两个端点坐标,并将所述端点坐标及所述扇形的圆心坐标合并到所述初始轴对齐包围盒中;
根据所述弧度范围得到所述扇形与参考坐标系的坐标轴的交点索引,其中,所述参考坐标系的原点为所述扇形的圆心;
根据所述交点索引查找所述扇形与所述坐标轴的交点坐标,并将所述扇形与所述坐标轴的交点坐标合并到所述初始轴对齐包围盒中,得到所述扇形的轴对齐包围盒。
可选地,所述确定模块具体用于:
判断目标点是否位于所述轴对齐包围盒中;
若所述目标点位于所述轴对齐包围盒中,判断所述目标点是否位于所述扇形所在的圆形区域中;
若所述目标点位于所述圆形区域中,判断所述目标点是否位于所述扇形区域中。
第三方面,本申请实施例还提供一种电子设备,所述电子设备包括处理器及存储有计算机指令的非易失性存储器,计算机指令被处理器执行时,实现以上实施例中所述的扇形区域确定方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例提供的扇形区域确定方法、装置及电子设备,通过简单计算获取到扇形的圆心、端点及扇形弧与参考坐标系的交点,根据扇形的圆心、端点及扇形弧与参考坐标系的交点来构建扇形的轴对齐包围盒,并通过扇形轴对齐包围盒确定目标点是否位于扇形区域中,过滤掉扇形周围大量的预判区域,节省大量不必要的计算,减少性能消耗,有效地提高图形处理的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应该看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的结构示意图;
图2为本申请实施例提供的扇形区域确定方法的流程示意图;
图3a为本申请实施例提供的扇形的初始轴对齐包围盒的示意图;
图3b为本申请实施例提供的扇形的轴对齐包围盒的示意图;
图4为图2中步骤s14的子步骤流程示意图;
图5为图2中步骤s16的子步骤流程示意图;
图6为本申请实施例提供的扇形区域确定装置的结构示意图。
图标:100-电子设备;200-扇形区域确定装置;110-处理器;120-存储器;210-构建模块;220-确定模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在现有技术中,通常采用扇形所在的圆形作为确定扇形区域的预判区域,在判断某一目标是否在扇形内时,先判断该目标是否在扇形所在的圆形区域内,再判断该目标是否在扇形区域内。
然而,申请人发现,上述现有技术中以扇形所在的圆形作为确定扇形区域的预判区域的方式虽然可以过滤掉一部分位置,但是由于圆形区域面积大于扇形区域,在后续的判断过程中,仍然会造成一部分位置的漏判,判断正确的比例δ为扇形的弧度范围占整个圆周的比例,可以用如下公式来表示:
其中,θ为扇形角度的一半。
例如,当某一扇形的角度为
为了克服上述现有技术中存在的问题,申请人经过研究提供了下面实施例给出的解决方案。
请参照图1,图1是本申请实施例提供的一种电子设备100的结构示意图。所述电子设备100包括处理器110及存储有计算机指令的非易失性存储器120。
其中,所述电子设备100可以是,但不限于,个人电脑(personalcomputer,pc)、平板电脑、智能手机等。所述电子设备100的操作系统(operatingsystem,os)可以是,但不限于,安卓(android)系统、ios(iphoneoperatingsystem)系统、windowsphone系统、windows系统等。所述非易失性存储器120可用于存储程序或数据,所述电子设备100还包括本申请实施例提供的扇形区域确定装置200,所述扇形区域确定装置200包括至少一个可以软件(software)或固件(firmware)的形式存储于所述非易失性存储器120中或固化在所述电子设备100的操作系统中的软件功能模块,所述处理器110用于执行所述存储器120中存储的可执行模块,例如所述扇形区域确定装置200所包括的软件功能模块及计算机指令等。
请参照图2,图2是本申请实施例提供的扇形区域确定方法的流程示意图。下面将对所述扇形区域确定方法作详细阐述。
所述扇形区域确定方法包括:
步骤s11,获取初始轴对齐包围盒。
在本实施例中,所述初始轴对齐包围盒可以是不包含任何区域的空包围盒,可以表示为:
[x0=0,y0=0,x1=0,y1=0]
请参照图3a,在本实施例中,所述初始轴对齐包围盒还可以是扇形所在的圆形的轴对齐包围盒。首先,将所述扇形的圆心o标记为原点o(0,0),构建一参考坐标系。然后,根据所述扇形所在的圆形,构建该圆形的外接矩形作为初始轴对齐包围盒,可以表示为:
[x0=r,y0=r,x1=-r,y1=-r]
其中,r为所述扇形及扇形所在圆形的半径。所述初始轴对齐包围盒与坐标轴的交点,以x轴正向为起始,分别为p0(r,0)、p1(0,r)、p2(-r,0)、p3(0,-r)。
步骤s12,根据扇形的对称轴方向弧度及扇形的角度得到所述扇形的弧度范围。
在游戏开发中,扇形区域通常由一个方向
步骤s13,根据所述弧度范围得到所述扇形的两个端点坐标,并将所述端点坐标及所述扇形的圆心坐标合并到所述初始轴对齐包围盒中。
将所述扇形的两个端点分别标记为a、b,根据步骤s12中求得的所述扇形的方向弧度及弧度范围,可以得到所述扇形的两边的弧度值分别为λa=λ-θ、λb=λ+θ,根据三角函数公式,可以求得a、b两点的坐标分别为a(cos(λ-θ),sin(λ-θ)),b(cos(λ+θ),sin(λ+θ))。
将a、b、o三点的坐标分别与所述初始轴对齐包围盒的范围比较,比较过程可以用如下公式来表示:
if(x0>x)x0=x;
if(x1<x)x1=x;
if(y0>y)y0=y;
if(y1>y)y1=y;
其中,x、y分别表示参与比较过程的点的横、纵坐标分量。
请参照图3b,根据比较结果,将满足上述公式条件的a、b或o点的坐标合并到所述初始轴对齐包围盒中。需要说明的是,通常情况下,在游戏开发中所采用的扇形角度都小于180°,经过上述比较过程,所述扇形的原点坐标及两个端点坐标通常都可以合并到所述初始轴对齐包围盒中。例如,当所述扇形的角度大于90°且小于180°,且扇形对称轴弧度在
[x0=cos(λ-θ),y0=r,x1=cos(λ+θ),y1=0]
步骤s14,根据所述弧度范围得到所述扇形与参考坐标系的坐标轴的交点索引,其中,所述参考坐标系的原点为所述扇形的圆心。
由于参考坐标系任意一个象限的弧度均为0.5π,在扇形的弧度范围内为0.5π的整数倍的弧度值即扇形的圆弧与坐标轴的交点的弧度值,例如,若一扇形s1的弧度范围为[0.3π,0.85π],则其中0.5π的弧度值分别为该扇形的圆弧与坐标轴的交点的弧度值,根据正弦函数和余弦函数,可以求得该扇形的圆弧与坐标轴的交点的坐标。
然而,由于正弦函数和余弦函数的求解过程也是一个相对耗时的过程,为加快处理速度,应该尽量予以省略。本申请实施例采用交点索引的方式获取所述扇形的圆弧与坐标轴的交点坐标,通过以上步骤s11可知,根据扇形所在圆形构造的初始包围盒与坐标轴的四个交点p0(r,0)、p1(0,r)、p2(-r,0)、p3(0,-r)即为所述扇形的圆弧可能与坐标轴相交的点。获取所述扇形与参考坐标系的坐标轴的交点索引的具体过程如下。
请参照图4,图4是步骤s14的子步骤流程图。
子步骤s141,将所述扇形的弧度范围除以0.5π,得到所述扇形与所述坐标轴的交点索引范围。
仍然以上述扇形s1为例,对扇形s1的弧度范围除以0.5π,得到以0.5π为单位的交点索引范围为[0.6,1.7]。
子步骤s142,遍历所述交点索引范围,得到所述交点索引范围中的整数,将所述整数对4取余,得到所述交点索引。
作为一种可选的实施方式,对于任意交点索引范围[a,b],可以计算得到不小于范围下限值a的最小整数a以及不大于范围上限值b的最大整数b,获取交点整数索引范围[a,b],在所述交点整数索引范围的所有整数即为所述扇形与坐标轴的全部交点的索引值。例如,对于上述扇形s1的交点索引范围[0.6,1.7],得到交点整数索引范围[1],即得到范围内的整数为1。
由于角度的循环性,且一个圆周和坐标轴有4个交点,把该范围内的整数对4取余,得到交点的索引值1,交点索引即为扇形弧与坐标轴的交点在一个圆周内的序号。
得到所述交点索引后,转入步骤s15。
步骤s15,根据所述交点索引查找所述扇形与所述坐标轴的交点坐标,并将所述扇形与所述坐标轴的交点坐标合并到所述初始轴对齐包围盒中,得到所述扇形的轴对齐包围盒。
仍然以上述扇形s1为例,根据交点索引1,查找得到所述扇形与所述坐标轴的交点坐标p1(0,r),并将点p1合并到经过上述步骤s13处理后得到的初始轴对齐包围盒中,具体地,将点p1的坐标分别与初始轴对齐包围盒的范围比较,比较过程可以参考步骤s13。合并后,得到上述扇形s1的轴对齐包围盒如下:
[x0=cos(λ-θ),y0=r,x1=cos(λ+θ),y1=0]
得到所述扇形的轴对齐包围盒后,转入步骤s16。
步骤s16,根据所述轴对齐包围盒确定目标点是否位于扇形区域内。
经上述步骤s15的第二次合并后,得到与所述扇形外接的轴对齐包围盒,根据该轴对齐包围盒能够使确定的扇形区域以外的误判区域最小化。
请参照图5,图5是步骤s16的子步骤的流程示意图,该步骤具体包括:
子步骤s161,判断目标点是否位于所述轴对齐包围盒中。
具体地,判断目标点是否位于所述轴对齐包围盒中的步骤包括以下内容:
首先,根据所述轴对齐包围盒得到所述目标点在所述参考坐标系中的横轴分量范围,判断所述目标点的横轴分量是否在所述横轴分量范围中。
其次,根据所述轴对齐包围盒得到所述目标点在所述参考坐标系中的纵轴分量范围,判断所述目标点的纵轴分量是否在所述纵轴分量范围中。
然后,当所述目标点的横轴分量在所述横轴分量范围中且纵轴分量在所述纵轴分量范围中时,判定所述目标点位于所述轴对齐包围盒中。
子步骤s162,若所述目标点位于所述轴对齐包围盒中,判断所述目标点是否位于所述扇形所在的圆形区域中。
具体地,判断所述目标点是否位于所述扇形所在的圆形区域中的步骤包括以下内容:
判断所述目标点的横轴分量的平方与纵轴分量的平方之和是否小于所述扇形半径的平方。
通常判断目标点是否在圆形区域内是用目标点与圆心之间的距离与圆的半径长度值比较,计算两点间的距离需要用到开平方操作,而开平方计算也比较耗时。申请人发现,当不采用开平方计算,直接将所述目标点的横轴分量的平方与纵轴分量的平方之和与所述圆形区域的半径的平方进行比较,能够得出与开平方之后相同的比较结果。本申请直接判断所述目标点的横轴分量的平方与纵轴分量的平方之和是否小于所述扇形半径的平方,省略开平方计算,能够节省较多的处理时间,使系统具有更高的图形处理效率。
子步骤s163,若所述目标点位于所述圆形区域中,判断所述目标点是否位于所述扇形区域中。
具体包括:根据所述目标点位于所述参考坐标系中的坐标,得到所述目标点与所述参考坐标系的原点的连线的弧度;
判断所述弧度是否位于所述弧度范围中。
得出所述目标点是否位于所述扇形区域中的结果后,即能对所述目标点进行后续的处理或操作。
请参照图6,图6是本申请实施例提供的扇形区域确定装置200的结构示意图,所述的扇形区域确定装置200可以应用于图1所示的电子设备100中。可以理解的是,所述扇形区域确定装置200的各个功能模块的具体功能在上述实施例中已经详细描述过,在此仅对所述扇形区域确定装置200的功能模块作简要说明。
所述扇形区域确定装置200包括:
构建模块210,用于构建扇形的轴对齐包围盒。
所述构建模块210具体用于:
获取初始轴对齐包围盒;
根据扇形的对称轴方向的弧度及扇形的角度得到所述扇形的弧度范围;
根据所述弧度范围得到所述扇形的两个端点坐标,并将所述端点坐标及所述扇形的圆心坐标合并到所述初始轴对齐包围盒中;
根据所述弧度范围得到所述扇形与参考坐标系的坐标轴的交点索引,其中,所述参考坐标系的原点为所述扇形的圆心;
根据所述交点索引查找所述扇形与所述坐标轴的交点坐标,并将所述扇形与所述坐标轴的交点坐标合并到所述初始轴对齐包围盒中,得到所述扇形的轴对齐包围盒。
确定模块220,用于根据所述轴对齐包围盒确定目标点是否位于扇形区域内。
所述确定模块220具体用于:
判断目标点是否位于所述轴对齐包围盒中;
若所述目标点位于所述轴对齐包围盒中,判断所述目标点是否位于所述扇形所在的圆形区域中;
若所述目标点位于所述圆形区域中,判断所述目标点是否位于所述扇形区域中。
综上所述,本申请实施例提供的扇形区域确定方法、装置及电子设备,通过简单计算获取到扇形的圆心、端点及扇形弧与参考坐标系的交点,根据扇形的圆心、端点及扇形弧与参考坐标系的交点来构建扇形的轴对齐包围盒,并通过扇形轴对齐包围盒确定目标点是否位于扇形区域中,过滤掉扇形周围大量的预判区域,节省大量不必要的计算,减少性能消耗,有效地提高图形处理的效率。
在本申请所提供的实施例中,应当理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示所指代内容的相对重要性。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。