具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
参见图1,本实施例提供了一种显示人物关系的方法,该方法流程具体如下:
101:确定多个待显示人物之间的关系及排列顺序,该多个待显示人物包括一个中心人物与预设个数个相关人物;
102:根据该多个待显示人物之间的关系及排列顺序,绘制中心人物的人物关系;
103:在每个渲染周期内计算绘制的任意两个人物节点之间的距离,并根据计算的距离与预设距离的关系,使该任意两个人物节点相对移动,直至所有人物节点之间保持稳定距离。
其中,渲染周期指每两次渲染之间的时间间隔,本实施例不对具体的渲染周期进行限定,实际应用过程中,可以根据帧速率进行设定,即根据每秒钟刷新的图片的帧数进行设定。
本实施例提供的方法,通过在绘制人物关系之后,计算任意两个人物节点之间的距离,并根据计算的距离与预设距离的关系,使任意两个人物节点相对移动,直至所有人物节点之间保持稳定距离,从而达到动画的效果,起到优化人物关系布局的作用,使人物关系更加清晰、准确,进而提高了用户体验。
实施例二
本实施例提供了一种显示人物关系的方法,该方法不仅能够有效降低人物关系的交叉,还能使人物关系的显示达到动画的效果,同时起到优化人物关系布局的作用。参见图2,该方法流程具体如下:
201:确定多个待显示人物之间的关系及排列顺序,该多个待显示人物包括一个中心人物与预设个数个相关人物;
针对该步骤,首先需要获取多个待显示人物之间的关系数据,该多个待显示人物包括一个中心人物与预设个数个相关人物。实际应用过程中,中心人物即为用户搜索的人物,也就是用户关注的人物,与中心人物相关的相关人物可以有多个,但由于显示界面有限,在显示中心人物的人物关系时,需要对显示的相关人物的数量进行限制。为此,本实施例采取了在多个相关人物中选择预设个数个相关人物进行显示的方式,至于如何在多个相关人物中选取预设个数个相关人物,以及预设个数的具体数量,本实施例均不做具体限定,可根据实际情况进行设定。为了便于选取,本实施例采取按相关人物与中心人物之间的疏密度将每个相关人物进行分级的方式,例如,将与中心人物直接相关的人物列为一级相关人物,将与中心人物间接相关的人物列为二级相关人物。再根据相关人物的不同级别选取预设个数个相关人物,例如,在一级相关人物中选取7个相关人物,再在二级相关人物中随机选取3个相关人物。
获取多个待显示人物之间的关系数据之后,可通过获取到的数据建立多个待显示人物之间的关系列表,以中心人物为A,预设个数为5,5个相关人物分别为B、C、D、E和F为例,则他们之间的关系列表可如下面表1所示:
表1
由表1可以清楚地看出各个人物之间的关系,则在确定多个待显示人物之间的关系之后,再根据确定的关系将中心人物与预设个数个相关人物进行排序,排序结果同样可以列表的形式显示。具体的排序方式可以有多种,本实施例对此不做具体限定,包括但不限于如下实现方式:
首先,遍历关系数据,从中提取具有单层关系的人物信息,并将其依次排列在中心人物之后;
如以表1所示的关系为例,则从表1中可以看出,相关人物D仅与中心人物A有关系,同其他相关人物不存在关系,因此,可认为该相关人物D仅有单层关系,则将其排列在相关人物A的后面。
其次,在其余未被排序的相关人物中选取一个相关人物,由于该相关人物具有多层关系,则在将其排列在已排序的人物之后,再递推该被选取的相关人物的关系树,并将递推到的人物依次排列在该被选取的相关人物之后;以此类推,直至得到该多个待显示人物之间的排列顺序。
需要说明的是,在其余未被排序的相关人物中选取一个相关人物时,可以有多种选取方式,本实施例对此不做具体限定。例如,当选取的相关人物为B时,则在将相关人物B排列在已排序的相关人物D之后,递推该相关人物B的关系树,从表1可以看出,相关人物B与相关人物C有关系,而相关人物C又与相关人物F有关系,相关人物F与相关人物E有关系,相关人物E与中心人物A有关系,由于中心人物A已排序,则递推结束。根据递推顺序,将递推到的相关人物C、F和E依次排列在相关人物B之后,到此,所有人物的排序过程结束,最终排序结果可如下面表2所示:
表2
序号 |
人物 |
1 |
A |
2 |
D |
3 |
B |
4 |
C |
5 |
F |
6 |
E |
202:根据该多个待显示人物之间的关系及排列顺序,绘制该中心人物的人物关系;
具体地,由于对多个待显示人物进行排序的方式可以有多种,则根据排列顺序绘制中心人物的人物关系时,相应地也可以有多种绘制方式及对应的绘制结果,本实施例不对具体的绘制方式及绘制结果进行限定。绘制方式包括但不限于根据排列顺序按照等间隔角度将每个相关人物节点放置在中心人物节点的周边任意距离的位置,并按照多个待显示人物之间的关系进行连接。
其中,本实施例不对任意距离的大小进行限定。例如,仍以中心人物为A,相关人物分别为B、C、D、E和F为例,他们之间的关系如表1所示,排列顺序如表2所示,则根据排列顺序按照等间隔角度将每个相关人物节点放置在中心人物节点的周边任意距离的位置时,可将中心人物A放置在显示界面的中心位置之后,根据表2中的排列顺序,按照等间隔角度将相关人物D、B、C、F和E依次放置在中心人物A的周边任意距离的位置,再按照表1所示的各个人物之间的关系将各个人物节点进行连接,以绘制好的人物关系如图3所示为例。
从图3的绘制结果中可以看出,由于人物之间的排列顺序是按照人物关系进行递推的,因此,该步骤在根据排列顺序按照等间隔角度将每个相关人物放置在中心人物节点的周边时,能够起到降低人物节点之间的关系交叉的作用。然而,为了进一步避免由于人物关系复杂而导致用户看不清楚各人物之间的具体关系问题,同时达到一种动画效果,进而提升用户体验,本实施例采取了后续的处理过程,详见如下步骤。
203:在每个渲染周期内计算任意两个人物节点之间的距离;
其中,渲染周期指每两次渲染之间的时间间隔,本实施例不对具体的渲染周期进行限定,实际应用过程中,可以根据帧速率进行设定,即根据每秒钟刷新的图片的帧数进行设定。对于如何计算任意两个人物节点之间的距离,现有技术中有多种算法,本实施例对此不做具体限定。
204:根据计算的距离与预设距离的关系,使该任意两个人物节点相对移动,直至所有人物节点之间保持稳定距离。
针对该步骤,为了保持各个人物节点之间的位置分布均匀,本实施例采取了预先为每两个人物节点设置一个理想距离的方式,该距离即为预设距离。预设距离需要根据显示界面的宽度和高度,以及显示的人物个数进行获取。仍以中心人物为A,相关人物为B、C、D、E和F为例,待显示的中心人物节点与相关人物节点加起来一共有6个,则根据显示界面的宽度和高度,为每个人物节点分配一个可使各个人物节点之间的位置分布均匀的理想位置;再计算任意两个节点之间的距离,该距离即为预设距离。本实施例不对预设距离的获取方式进行限定,同样不对预设距离的大小进行限定。
如果各个人物节点之间按照预设距离来显示,则显示出来的人物关系将是一个理想的状态。但在实际应用中,根据排列顺序按照等间隔角度将每个相关人物节点放置在中心人物节点的周边任意距离的位置后,显示的人物关系很难达到理想状态,因此,在绘制中心人物的人物关系之后,需要调整任意两个人物节点之间的距离,以使任意两个人物节点之间的距离向预设距离靠近,从而使显示的人物关系趋于理想状态。
具体地,当两个人物节点之间的距离达到预设距离时,为平衡状态;当两个人物节点之间的距离大于预设距离时,两个人物节点之间具有约束力,迫使两个人物节点的距离减少;当两个人物节点之间的距离小于预设距离时,两个人物节点之间具有排斥力,迫使两个人物节点之间的距离增加。无论是约束力,还是排斥力,都将迫使两个人物节点相对移动。
在根据计算的距离与预设距离的关系,使任意两个人物节点相对移动时,需要先判断计算的距离是否大于预设距离;
如果是,则使该任意两个人物节点向对方位置相对移动;
例如,根据计算的距离与预设距离的差值,为任意两个人物节点设定一个向对方位置移动的正向加速度,并根据正向加速度计算任意两个人物节点的正向速度,使该任意两个人物节点按正向速度向对方位置移动;
如果否,则使该任意两个人物节点向对方反向位置相对移动。
例如,根据计算的距离与预设距离的差值,为任意两个人物节点设定一个向对方反向位置移动的反向加速度,并根据反向加速度计算任意两个人物节点的反向速度,使该任意两个人物节点按反向速度向对方方向位置移动。
可选地,在使任意两个人物节点相对移动时,除了为该任意两个人物节点均计算一个移动速度,使该任意两个人物节点同时移动之外,还可以采取仅使任意两个人物节点之中的一个人物节点移动的方式,从而达到使该任意两个人物节点相对移动的目的,本实施例不对使任意两个人物节点相对移动的方式进行具体限定。
进一步地,在根据计算的距离与预设距离的关系,使任意两个人物节点相对移动之后,如果任意人物节点移动到显示页面边界,则反向移动该任意人物节点;如果任意人物节点的移动速度小于阈值,则停止移动该任意人物节点,认为该任意人物节点与其他人物节点之间的距离达到了平衡。待所有人物节点之间的距离均达到平衡之后,即所有人物节点之间保持稳定距离之后,每个人物节点之间的关系将清楚的布局在显示页面上,方便用户查看,仍以如图3所示的中心人物的初始人物关系布局为例,则经过优化之后,显示人物关系的布局可如图4所示。
需要说明的是,在显示人物之间的具体关系描述信息时,本实施例提供的方法同样可支持现有技术中的显示方式,即在用户点击两个人物节点之间的连线时,在该连线处将显示描述二者之间的关系信息,例如,对手、朋友、经纪人等等。可选地,本实施例提供的方法,还支持在两个人物节点之间的连线处显示描述其中一个人物节点的关键词(图3及图4中的两个人物节点的连线处省略了具体的描述信息),且该关键词等描述信息可以在每次刷新人物关系时,或是按照预设的刷新周期进行刷新,从而为用户提供实时更新的人物关系描述信息。其中,刷新周期可根据用户需求,或是实际应用进行设定,本实施例对此不做具体限定。对于人物节点之间的连线处具体显示何种描述信息,本实施例对此同样不做具体限定。
综上所述,本实施例提供的方法,通过根据中心人物与预设个数个相关人物之间的关系及排列顺序,绘制中心人物的人物关系,可有效降低人物关系的交叉;并通过在绘制人物关系之后,根据计算的任意两个人物节点之间的距离与预设距离的关系,使任意两个人物节点相对移动,直至所有人物节点之间保持稳定距离,从而达到动画的显示效果,不仅能起到优化人物关系布局的作用,使人物关系更加清晰、准确,还能提升用户体验;另外,由于各个人物之间的关系的描述信息还可刷新,从而可为用户提供最新人物关系的描述信息,进一步满足用户的搜索需求,提高用户体验。
实施例三
参见图5,本实施例提供了一种显示人物关系的装置,该装置包括:
确定模块501,用于确定多个待显示人物之间的关系及排列顺序,该多个待显示人物包括一个中心人物与预设个数个相关人物;
绘制模块502,用于根据确定模块501确定的多个待显示人物之间的关系及排列顺序,绘制中心人物的人物关系;
计算模块503,用于在每个渲染周期内计算绘制模块502绘制的任意两个人物节点之间的距离;
优化模块504,用于根据计算模块503计算的距离与预设距离的关系,使该任意两个人物节点相对移动,直至所有人物节点之间保持稳定距离。
其中,渲染周期指每两次渲染之间的时间间隔,本实施例不对具体的渲染周期进行限定,实际应用过程中,可以根据帧速率进行设定,即根据每秒钟刷新的图片的帧数进行设定。
参见图6,确定模块501,具体包括:
获取单元501a,用于获取多个待显示人物之间的关系数据,该多个待显示人物包括一个中心人物与预设个数个相关人物;
第一排序单元501b,用于遍历获取单元501a获取到的关系数据,从中提取具有单层关系的人物信息,并将其依次排列在中心人物之后;
第二排序单元501c,用于在其余未被第一排序单元501b排序的相关人物中选取一个相关人物,并将其排列在已排列的人物之后,再递推该被选取的相关人物的关系树,将递推到的人物依次排列在该被选取的相关人物之后,以此类推,直至将所有相关人物排列完毕,得到该多个待显示人物之间的排列顺序。
具体地,绘制模块502,具体用于根据确定模块501确定的多个待显示人物之间的排列顺序,按照等间隔角度将每个相关人物节点放置在中心人物节点的周边任意距离的位置,并按照确定模块501确定的多个待显示人物之间的关系进行连接。
参见图7,优化模块504具体包括:
判断单元504a,用于判断计算模块503计算的距离是否大于预设距离;
处理单元504b,用于在判断单元504a判断计算的距离大于预设距离时,使该任意两个人物节点向对方位置相对移动;在判断单元504a判断计算的距离小于预设距离时,则使该任意两个人物节点向对方反向位置相对移动。
进一步地,参见图8,该显示人物关系的装置还包括:
后处理模块505,用于在任意人物节点移动到显示页面边界时,则反向移动该任意人物节点;在任意人物节点的移动速度小于阈值时,则停止移动该任意人物节点。
综上,本实施例提供的装置,通过根据中心人物与预设个数个相关人物之间的关系及排列顺序,绘制中心人物的人物关系,可有效降低人物关系的交叉;并通过在绘制人物关系之后,根据计算的任意两个人物节点之间的距离与预设距离的关系,使任意两个人物节点相对移动,从而达到动画的效果,起到优化人物关系布局的作用,使人物关系更加清晰、准确,进而提高了用户体验。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本发明实施例中的全部或部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。