发明内容
本发明实施例提供一种资源展示方法及装置,用于实现多资源的三维呈现效果。
本发明实施例提供一种资源展示方法,包括以下步骤:构造一个由折线构成的周期性结构图形,每个周期是由多段线段构成;其中,所述周期性结构图形所在平面与显示界面垂直;在所述周期性结构图形上构造三维3D矩形模型,3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合;其中,3D矩形模型所在平面与所述周期性结构图形所在平面垂直;将材质映射到3D矩形模型上;将具有材质的3D矩形模型投影到显示界面上。本实施例中将材质映射到3D矩形模型上,实现多资源的三维呈现效果,提供更好的视觉效果和用户体验。
优选的,构造一个由折线构成的周期性结构图形的步骤包括:采用双向链表结构构造周期性结构图形,其中构成周期性结构图形的一个线段为链表中的一个单元。对周期性结构图形进行操作是通过对双向链表的操作,处理速度快,内存利用率高。
优选的,构造一个由折线构成的周期性结构图形的步骤包括:在预设的三维直角坐标系中,XOY平面与显示界面平行,一个周期内的第一段的起点在X轴上,第一段位于XOZ平面上,且与X轴正方向存在预设角度的夹角,预设角度的范围为(0,π/2);第二段的起点为第一段的终点,且第二段与XOY平面平行;第三段的起点为第二段的终点,终点落在X轴上,且第三段与X轴负方向的夹角为所述预设角度;第四段的起点为第三段的终点,且第四段与X轴重合;每条线段起点的X轴坐标小于终点的X轴坐标,可以将所述四段中的任意一段作为周期的起始段;按照所述的方法构造所有周期,每个周期的终点为下一个周期的起点。本实施例中先构造一个周期内的图形结构,按照相同的方法构造所有周期,计算机能够重复操作,便于实现,节省代码量。
优选的,将所述周期性结构图形所在平面沿Y轴向上平移预设的距离。本实施例中,将所述周期性结构图形所在平面沿Y轴向上平移预设的距离,使得展示的资源处于显示界面中间位置,达到更好的视觉感官效果。
优选的,构造3D矩形模型的方法包括:构造多个3D矩形模型,将多个3D矩形模型上下组合并封装作为一个对象,封装后的3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合。本实施例中可以根据实际需求构造多个3D矩形模型,放置多个不同类型的内容;将多个3D矩形模型上下组合并封装作为一个对象,能够提高处理效率。
优选的,3D矩形模型是由2个全等的直角三角形拼接而成,2个直角三角形的斜边重合。三点可确定一个平面,本实施例中3D矩形模型可由两个三角形所在平面拼接而成,利用三角形结构的稳定性,并且通过两个三角形确定的两个平面,使得3D矩形模型更稳定,可提高材质映射的成功率。
优选的,材质包括文字、图片、视频和文本中的一项或多项。本实施例中支持各种文件格式。
本发明实施例提供一种资源展示方法,包括以下步骤:接收针对周期性结构图形上的3D矩形模型所在窗口输入的指令;根据接收的指令,将3D矩形模型循环移动。
优选的,接收指令包括:自动移动指令;或者,接收用户直接触摸或通过其它设备针对3D矩形模型所在窗口输入的拖动(或滑动)指令。本实施例中接收指令可以是预设的指令,也可以在3D矩形模型所在窗口中的任意一个位置实现,不需要点击特定的按钮,操作更灵活。
优选的,根据接收的指令,将3D矩形模型循环移动的步骤包括:根据接收的指令,利用双向链表的循环结构,将3D矩形模型循环移动。处理速度快,内存利用率高。
优选的,根据接收的指令,将3D矩形模型循环移动的步骤包括:在向左移动的过程中,判断显示界面上最左边3D矩形模型的上边线段终点的X轴坐标是否小于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标不小于显示界面左边界的X轴坐标,则继续向左移动;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标小于显示界面左边界的X轴坐标,则根据显示界面上最右边3D矩形模型的上边线段终点坐标和折叠角度,将最左边3D矩形模型插入到最右边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。本实施例中可以实现3D矩形模型在向左移动的过程中循环移动,三维效果更逼真。
优选的,根据接收的指令,将3D矩形模型循环移动的步骤包括:在向右移动的过程中,判断显示界面上最左边3D矩形模型上边线段起点的X轴坐标是否大于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标不大于显示界面左边界的X轴坐标,则继续向右移动;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标大于显示界面左边界的X轴坐标,则根据显示界面最左边3D矩形模型上边线段起点坐标和折叠角度,将最右边3D矩形模型插入到最左边3D矩形模型的首部,更新显示界面上所有3D矩形模型上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。本实施例中可以实现3D矩形模型在向右移动的过程中循环移动,三维效果更逼真。
本发明实施例提供一种资源展示装置,包括:
第一处理模块,用于构造一个由折线构成的周期性结构图形,每个周期是由多段线段构成;其中,所述周期性结构图形所在平面与显示界面垂直;
第二处理模块,用于在所述周期性结构图形上构造三维3D矩形模型,3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合;其中,3D矩形模型所在平面与所述周期性结构图形所在平面垂直;
映射模块,用于将材质映射到3D矩形模型上;
投影模块,用于将具有材质的3D矩形模型投影到显示界面上。
优选的,第一处理模块用于构造一个由折线构成的周期性结构图形:采用双向链表结构构造周期性结构图形,其中构成周期性结构图形的一个线段为链表中的一个单元。
第一处理模块用于构造一个由折线构成的周期性结构图形:在预设的三维直角坐标系中,XOY平面与显示界面平行,一个周期内的第一段的起点在X轴上,第一段位于XOZ平面上,且与X轴正方向存在预设角度的夹角,预设角度的范围为(0,π/2);第二段的起点为第一段的终点,且第二段与XOY平面平行;第三段的起点为第二段的终点,终点落在X轴上,且第三段与X轴负方向的夹角为所述预设角度;第四段的起点为第三段的终点,且第四段与X轴重合;每条线段起点的X轴坐标小于终点的X轴坐标,可以将所述四段中的任意一段作为周期的起始段;按照所述的方法构造所有周期,每个周期的终点为下一个周期的起点。
第二处理模块用于构造3D矩形模型:构造多个3D矩形模型,将多个3D矩形模型上下组合并封装作为一个对象,封装后的3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合。
本发明实施例提供一种资源展示装置,包括:
接收模块,用于接收针对周期性结构图形上的3D矩形模型所在窗口输入的指令;
处理模块,用于根据接收的指令,将3D矩形模型循环移动。
优选的,根据接收的指令,处理模块用于将3D矩形模型循环移动:根据接收的指令,利用双向链表的循环结构,将3D矩形模型循环移动。
优选的,根据接收的指令,处理模块用于将3D矩形模型循环移动:在向左移动的过程中,判断显示界面上最左边3D矩形模型的上边线段终点的X轴坐标是否小于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标不小于显示界面左边界的X轴坐标,则继续向左移动;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标小于显示界面左边界的X轴坐标,则根据显示界面上最右边3D矩形模型的上边线段终点坐标和折叠角度,将最左边3D矩形模型插入到最右边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。
优选的,根据接收的指令,处理模块用于将3D矩形模型循环移动:在向右移动的过程中,判断显示界面上最左边3D矩形模型上边线段起点的X轴坐标是否大于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标不大于显示界面左边界的X轴坐标,则继续向右移动;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标大于显示界面左边界的X轴坐标,则根据显示界面最左边3D矩形模型上边线段起点坐标和折叠角度,将最右边3D矩形模型插入到最左边3D矩形模型的首部,更新显示界面上所有3D矩形模型上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明实施例中采用新一代图形系统视窗呈现基础(Windows PresentationFoundation,WPF)提供的统一编程模型、语言和框架,以及多媒体编程接口(Direct eXtension,DirectX)技术中硬件加速的功能来运行矢量图形、图像、视频、文档和动画等控件,使显示界面能够呈现三维效果,通过坐标轴、曲线节点和梯度曲线等三维模型对各种对象进行互动展现,极大的增强视觉效果。
本发明实施例中将材质映射到周期性结构图形上的3D(三维)矩形模型上,以呈现三维效果。这里的材质包括文字、图片、视频、文本等,3D矩形模型是由2个全等的直角三角形拼接而成,2个直角三角形的斜边重合。
参见图1,本实施例中要展示多个资源呈现三维效果的方法主要流程如下:
步骤101、构造一个由折线构成的周期性结构图形,每个周期是由多段线段构成;其中,所述周期性结构图形所在平面与显示界面垂直;
优选的,构造一个由折线构成的周期性结构图形的步骤包括:采用双向链表结构构造周期性结构图形,其中构成周期性结构图形的一个线段为链表中的一个单元。
优选的,构造一个由折线构成的周期性结构图形的步骤包括:在预设的三维直角坐标系中,XOY平面与显示界面平行,一个周期内的第一段的起点在X轴上,第一段位于XOZ平面上,且与X轴正方向存在预设角度的夹角,预设角度的范围为(0,π/2);第二段的起点为第一段的终点,且第二段与XOY平面平行;第三段的起点为第二段的终点,终点落在X轴上,且第三段与X轴负方向的夹角为所述预设角度;第四段的起点为第三段的终点,且第四段与X轴重合;每条线段起点的X轴坐标小于终点的X轴坐标,可以将所述四段中的任意一段作为周期的起始段;按照所述的方法构造所有周期,每个周期的终点为下一个周期的起点。
优选的,将所述周期性结构图形所在平面沿Y轴向上平移预设的距离。使得展示的资源处于显示界面中间位置,达到更好的视觉感官效果。
步骤102、在所述周期性结构图形上构造三维3D矩形模型,3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合;其中,3D矩形模型所在平面与所述周期性结构图形所在平面垂直;
优选的,构造3D矩形模型的方法包括:构造多个3D矩形模型,将多个3D矩形模型上下组合并封装作为一个对象,封装后的3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合。
优选的,3D矩形模型是由2个全等的直角三角形拼接而成,2个直角三角形的斜边重合。
步骤103、将材质映射到3D矩形模型上。
优选的,材质包括文字、图片、视频和文本中的一项或多项。
步骤104、将具有材质的3D矩形模型投影到显示界面上。
下面通过一个典型的实施例来介绍将材质映射到周期性结构图形上的三维(3D)矩形模型上,以呈现三维效果的方法,参见图2,具体包括以下步骤:
步骤201、初始化一个坐标系,确定所述坐标系的原点。具体的说,初始化一个坐标系,显示界面右方向为X正轴,显示界面上方向为Y正轴,Z轴垂直于XOY平面向外。
步骤202、在所述坐标系中,构造一个由折线构成的周期性结构图形,每个周期是由四段线段构成。具体的说,如图3所示,一个周期分成四段①、②、③、④,每段的长度为L,假设第一段的起点在X轴上,且第一段位于XOZ平面上,与X轴正方向的夹角为α,α为预设角度,预设角度的范围为(0,90);第二段的起点为第一段的终点,且第二段与XOY平面平行;第三段的起点为第二段的终点,终点落在X轴上,且第三段与X轴负方向的夹角为α;第四段的起点为第三段的终点,且第四段与X轴重合;每条线段起点的X轴坐标小于终点的X轴坐标,可以将所述四段中的任意一段作为周期的起始段。按照相同的方法构造所有周期,每个周期的终点为下一个周期的起点。
优选的,若一个周期内第一段的起点坐标为(x,y,z),则第二段的起点坐标为(x+L*Cosα,y,z+L*Sinα),第三段的起点坐标为(x+L*Cosα+L,y,z+L*Sinα),第四段的起点坐标为(x+2*L*Cosα+L,y,z),第四段的终点坐标为(x+2*L*Cosα+2*L,y,z),第四段的终点坐标为下一个周期的起点坐标,每个周期内每一段的起点坐标依据前一段终点坐标计算,前一段的终点坐标为后一段的起点坐标。
步骤203、将构造的周期性结构图形所在平面沿Y轴向上平移预设的距离,其中,预设的距离小于显示界面中心点到显示界面上边界的距离。具体的说,将所述周期性结构图形所在平面沿Y轴向上平移预设的距离,使得展示的资源处于显示界面中间位置,达到更好的视觉感官效果。
步骤204、构造两个3D矩形模型,将两个3D矩形模型上下组合并封装作为一个对象,构造的周期性结构图形中线段的起点坐标为封装后最上面的3D矩形模型左上角的坐标。具体的说,本实施例需要展示的资源包括时间和与时间关联的图片内容,故构造A1和A2两个3D矩形模型,A1和A2两个3D矩形模型可以分别放置时间和与时间关联的图片内容,将A1和A2按照如图4所示上下组合封装作为一个对象,通过指令可以对这个对象进行操作,也可以对这个对象中的A1和A2分别进行操作。也可以根据实际需要展示的资源,构造多个3D矩形模型,将多个3D矩形模型上下组合并封装作为一个对象,所述对象中的多个3D矩形模型可以放置多个不同类型的内容,构造的周期性结构图形中线段的起点坐标为封装后最上面的3D矩形模型左上角的坐标。
步骤205、将不同的材质映射到封装后的上下两个3D矩形模型上。
步骤206、将具有材质的3D矩形模型在二维界面上显示。具体的说,采用WPF中的DirectX技术,将具有材质的3D矩形模型在二维界面上显示出三维折叠效果。
关于步骤204,优选的,如图5所示,在初始构造所有模型的时候,模型可以看作3D矩形模型或者封装后的对象,三维坐标系的原点在显示界面正中间,取显示界面最左边构造第一个模型,二维视野的长宽分别为m、n,三维视野的镜头安置在Z轴的某个位置,坐标为(0,0,Z),三维视野角度为β,那么三维视野的可视范围的长为2*Z*tanβ,宽为2*n*Z*tanβ/m。那么第一个模型的坐标为(-Z*tanβ,y,0),再依据周期规律构造所有的对象,每个对象都是依据前一个对象的属性生成。
优选的,定义一个周期枚举包含:{CycleOne,CycleTwo,CycleThree,CycleFour}来标注每个周期内的四个模型。在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度,折叠角度的范围为[0,π),如图5所示,一个周期内①、②、③、④段的折叠角度分别为α、0、π-α、0。一个周期内,每个模型左边的轴与XOZ平面垂直,第一个模型左上角坐标为第一段①的起点坐标,以第一个模型左边为轴进行旋转,使该模型所在平面与XOY平面的二面角为第一段①的折叠角度,周期类型从CycleOne开始,也就是说第一个模型靠近显示界面的左边界,类型为CycleOne,后面的模型左上角坐标为它对应的周期性结构图形中线段的起点坐标,以该模型左边为轴进行旋转,使该模型所在平面与XOY平面的二面角为它对应的周期性结构图形中线段的折叠角度,据此依据周期规律推导生成所有的模型。初始化构造所有模型的伪代码片段如下:
{
前一个模型为A;
模型的长度为L;
前一个模型的坐标为(x,y,z);
折叠角度为α;
生成新的模型B;
新模型的坐标为Pt;
Switch(A的周期类型)//根据前一个模型A的周期类型,推导生成新的模型B的周期类型、坐标和折叠角度。
{
Case CycleOne://如果前一个模型A的周期类型是CycleOne,则按照下面的代码生成新的模型B。
B的周期类型为CycleTwo;
B的坐标为Pt:(x+L*Cosα,y,z+L*Sinα);
B的折叠角度为:0;
Case CycleTwo://如果前一个模型A的周期类型是CycleTwo,则按照下面的代码生成新的模型B。
B的周期类型为CycleThree;
B的坐标为Pt:(x+L,y,z);
B的折叠角度为:π-α;
Case CycleThree://如果前一个模型A的周期类型是CycleThree,则按照下面的代码生成新的模型B。
B的周期类型为CycleFour;
B的坐标为Pt:(x+L*Cosα,y,z-L*Sinα);
B的折叠角度为:0;
Case CycleFour://如果前一个模型A的周期类型是CycleFour,则按照下面的代码生成新的模型B。
B的周期类型为CycleOne;
B的坐标为Pt:(x+L,y,z);
B的折叠角度为:α;
}
B的X、Y、Z的偏移坐标为Pt;
B的旋转中心点也为Pt;
添加B到图形界面;
}
还可以对3D矩形模型加上光源动画,具有材质的3D矩形模型的三维折叠效果图就可以更好的呈现出来,如图6所示。
以上介绍了3D矩形模型在周期性结构图形上呈现三维折叠效果的实现过程,下面是对周期性结构图形上的3D矩形模型上的图标进行操作的过程,本实施例中3D矩形模型上的材质在窗口中体现为图标形式。
参见图7,本实施例中要对个周期性结构图形上的3D矩形模型上的图标进行操作的方法主要流程如下:
步骤701、接收针对周期性结构图形上的3D矩形模型所在窗口输入的指令;
步骤702、根据接收的指令,将3D矩形模型循环移动。
优选的,接收指令,这里接收指令包括:自动移动指令;或者,接收用户直接触摸或通过其它设备针对3D矩形模型所在窗口输入的拖动(或滑动)指令。
优选的,根据接收的指令,处理模块用于将3D矩形模型循环移动:根据接收的指令,利用双向链表的循环结构,将3D矩形模型循环移动。
下面首先以接收指令为自动移动指令为例,介绍3D矩形模型向左移动,并且在向左移动的过程中实现循环移动,在移动的过程中是对封装后的对象进行操作,封装后的对象也是一个3D矩形模型,参见图8。
步骤801、接收自动移动指令。以默认向左移动为例。
步骤802、在向左移动的过程中,判断显示界面上最左边3D矩形模型的上边线段终点的X轴坐标是否小于显示界面左边界的X轴坐标,若是,则继续步骤803;否则继续步骤804。
步骤803、根据显示界面上最右边3D矩形模型的上边线段终点坐标和折叠角度,将最左边3D矩形模型插入到最右边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度。
步骤804、继续向左移动,继续步骤802。
下面以接收指令为自动移动指令为例,介绍3D矩形模型向右移动,并且在向右移动的过程中实现循环移动,在移动的过程中是对封装后的对象进行操作,封装后的对象也是一个3D矩形模型,参见图9。
步骤901、接收自动移动指令。以向右移动为例。
步骤902、在向右移动的过程中,判断显示界面上最左边3D矩形模型的上边线段起点的X轴坐标是否大于显示界面左边界的X轴坐标,若是,则继续步骤903;否则继续步骤904。
步骤903、根据显示界面上最左边3D矩形模型的上边线段起点坐标和折叠角度,将最右边3D矩形模型插入到最左边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度。
步骤904、继续向右移动,继续步骤902。
下面以接收指令为接收用户直接触摸或通过其它设备针对3D矩形模型所在窗口输入的拖动(或滑动)指令为例,介绍3D矩形模型向左或向右移动,并且在向左或向右移动的过程中实现循环移动,在拖动的过程中是对封装后的对象进行操作,封装后的对象也是一个3D矩形模型,参见图10。
步骤1001、接收用户直接触摸或通过其它设备针对3D矩形模型所在窗口输入的拖动指令。
步骤1002、根据接收的拖动指令,确定拖动的起始点位置、终点位置和方向。
步骤1003、按照确定的拖动方向,将起始点位置处的3D矩形模型拖动到终点位置。
优选的,如果拖动方向是向左,则在向左拖动的过程中,如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标小于显示界面左边界的X轴坐标,那么根据显示界面上最右边3D矩形模型的上边线段终点坐标和折叠角度,将最左边3D矩形模型插入到最右边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度,记录此时显示界面上最左边3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度以及最右边3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度。如果继续向左拖动,按照类似的方法操作。
具体的说,由折线构成的周期性结构图形在XOZ面的俯视图,如图11所示,一个周期分成四段①、②、③、④。双向链表存储了周期性结构图形中每条线段的起点坐标、终点坐标和折叠角度,每个线段的长度为L,用S表示链表的最左边3D矩形模型,用E表示链表的最右边3D矩形模型,S可以是①、②、③、④中的任意一种类型。如图S表示①,在向左拖动的过程中,S表示的①的坐标值会发生变化,如果①终点的X轴坐标小于显示界面左边界的X轴坐标,那么根据E的终点坐标和折叠角度,将①模型插入到链表的尾部,更新显示界面上所有模型的上边线段的起点坐标、终点坐标和折叠角度,同样以S、E保存链表的最左边3D矩形模型和最右边3D矩形模型。如果继续向左移动,按照类似的方法操作。
优选的,如果拖动方向是向右,在向右拖动的过程中,如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标大于显示界面左边界的X轴坐标,那么根据显示界面最左边3D矩形模型上边线段起点坐标和折叠角度,将最右边3D矩形模型插入到最左边3D矩形模型的首部,更新显示界面上所有3D矩形模型上边线段的起点坐标、终点坐标和折叠角度,记录此时显示界面上最左边3D矩形模型上边线段的起点坐标、终点坐标和折叠角度以及最右边3D矩形模型上边线段的起点坐标、终点坐标和折叠角度。如果继续向右移动,按照类似的方法操作。
具体的说,由折线构成的周期性结构图形在XOZ面的俯视图,如图12所示,一个周期分成四段①、②、③、④。双向链表存储了周期性结构图形中每条线段的起点坐标、终点坐标和折叠角度,每个线段的长度为L,用S表示链表的最左边3D矩形模型,用E表示链表的最右边3D矩形模型,S可以是①、②、③、④中的任意一种类型。如图S表示①,在向右拖动的过程中,S表示的①的坐标值会发生变化,如果①起点的X轴坐标大于显示界面左边界的X轴坐标,那么根据E的终点坐标和折叠角度,将E模型插入到链表的首部,更新显示界面上所有模型的上边线段的起点坐标、终点坐标和折叠角度,同样以S、E保存链表的最左边3D矩形模型和最右边3D矩形模型。如果继续向右移动,按照类似的方法操作。
优选的,在移动的过程中,假设最左边3D矩形模型的折叠角度为angle,为了使整个曲线序列在移动的同时伴随折叠角度的波形变化,需要设置angle的变化值。当angle在动画帧的时间戳中变化时,需要重置所有3D矩形模型的角度,其重置逻辑和初始化构造所有模型的伪代码片段类似。首先将最左边3D矩形模型重置其坐标和折叠角度,然后找到其他剩下的3D矩形模型序列,按照上述规律,依次重置,下一个依据上一个的属性重置坐标和折叠角度。利用WPF中的动画类,设置angle的double型动画,每次angle变化便重置所有3D矩形模型角度,整个曲线序列的折叠角度就可以循环的变化。
优选的,在移动循环过程中后面的模型都是依据前面的模型的坐标和角度生成的,坐标变量都是和角度的正弦余弦有关,在计算处理中,所有的正弦余弦都被计算成doube型的小数,尽管小数点后位数很长,由于计算机的最大计算位数限制,这些值也只是近似值,在这样累算的时候次数超过一定数量就会出现误差,最后导致所有模型的X和Z值出现较大偏差。所以需要在每次循环插入链表的时候,用程序纠正计算误差。要点是当前所在周期第一段CycleOne的Z轴坐标Z=0。每次纠正的时候将CycleOne的Z值重置为0即可。以下用伪代码片段来表述纠正误差的方法:
{
A为链表头的单元;
折叠角度为α;
A的坐标为(X,Y,Z);
A所在周期的第一段坐标Pt;
模型长度为L;
Switch(A的周期类型)//根据链表头的单元A的周期类型,推导A所在周期的第一段坐标,并且依据周期规律更新A的坐标。
{
Case CycleOne://如果链表头的单元A的周期类型为CycleOne,则按照下面的代码,推导A所在周期的第一段坐标,并更新A的坐标。
A所在周期的第一段坐标Pt:(X,Y,0);
依据周期规律更新A的坐标为:(X,Y,0);
Case CycleTwo://如果链表头的单元A的周期类型为CycleTwo,则按照下面的代码,推导A所在周期的第一段坐标,并更新A的坐标。
A所在周期的第一段坐标Pt:(X-L*Cosα,Y,0);
依据周期规律更新A的坐标为:(X+L*Cosα,Y,L*Sinα);
Case CycleThree://如果链表头的单元A的周期类型为CycleThree,则按照下面的代码,推导A所在周期的第一段坐标,并更新A的坐标。
A所在周期的第一段坐标Pt:(X-L*Cosα-L,Y,0);
依据周期规律更新A的坐标为:(X+L*Cosα+L,Y,L*Sinα);
Case CycleFour://如果链表头的单元A的周期类型为CycleFour,则按照下面的代码,推导A所在周期的第一段坐标,并更新A的坐标。
A所在周期的第一段坐标Pt:(X-2*L*Cosα-L,Y,0);
依据周期规律更新A的坐标为:(X+L+2*L*Cosα,Y,0);
}
}
纠正误差后,链表即可在折叠动画的过程中无限循环的向左移动。另外如果要实现无限循环向右移动,原理和向左移动类似。
通过以上介绍了解了展示多个资源呈现三维效果的实现过程,该过程可由装置实现,下面对该装置的内部结构和功能进行介绍。
参见图13,本实施例中一种资源展示装置包括:第一处理模块1301、第二处理模块1302、映射模块1303和投影模块1304。
第一处理模块1301,用于构造一个由折线构成的周期性结构图形,每个周期是由多段线段构成;其中,所述周期性结构图形所在平面与显示界面垂直;
第二处理模块1302,用于在所述周期性结构图形上构造三维3D矩形模型,3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合;其中,3D矩形模型所在平面与所述周期性结构图形所在平面垂直;
映射模块1303,用于将材质映射到3D矩形模型上;
投影模块1304,用于将具有材质的3D矩形模型投影到显示界面上。
较佳的,第一处理模块用于构造一个由折线构成的周期性结构图形:采用双向链表结构构造周期性结构图形,其中构成周期性结构图形的一个线段为链表中的一个单元。
较佳的,第一处理模块1301用于构造一个由折线构成的周期性结构图形:在预设的三维直角坐标系中,XOY平面与显示界面平行,一个周期内的第一段的起点在X轴上,第一段位于XOZ平面上,且与X轴正方向存在预设角度的夹角,预设角度的范围为(0,π/2);第二段的起点为第一段的终点,且第二段与XOY平面平行;第三段的起点为第二段的终点,终点落在X轴上,且第三段与X轴负方向的夹角为所述预设角度;第四段的起点为第三段的终点,且第四段与X轴重合;每条线段起点的X轴坐标小于终点的X轴坐标,可以将所述四段中的任意一段作为周期的起始段;按照所述的方法构造所有周期,每个周期的终点为下一个周期的起点。
较佳的,第一处理模块1301用于将所述周期性结构图形所在平面沿Y轴向上平移预设的距离。
较佳的,第二处理模块1302用于构造3D矩形模型:构造多个3D矩形模型,将多个3D矩形模型上下组合封装作为一个对象,封装后的3D矩形模型左上角的点与所述周期性结构图形中线段的起点重合。
较佳的,3D矩形模型是由2个全等的直角三角形拼接而成,2个直角三角形的斜边重合。
较佳的,材质包括文字、图片、视频和文本中的一项或多项。
参见图14,本实施例中一种资源展示装置包括:接收模块1401、处理模块1402。
接收模块1401,用于接收针对周期性结构图形上的3D矩形模型所在窗口输入的指令;
处理模块1402,用于根据接收的指令,将3D矩形模型循环移动。
较佳的,接收指令包括:自动移动指令;或者,接收用户直接触摸或通过其它设备针对3D矩形模型所在窗口输入的拖动(或滑动)指令。
较佳的,根据接收的指令,处理模块1402用于将3D矩形模型循环移动:根据接收的指令,利用双向链表的循环结构,将3D矩形模型循环移动。
较佳的,根据接收的指令,处理模块1402用于在向左移动的过程中,判断显示界面上最左边3D矩形模型的上边线段终点的X轴坐标是否小于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标不小于显示界面左边界的X轴坐标,则继续向左移动;如果显示界面上最左边3D矩形模型的上边线段终点的X轴坐标小于显示界面左边界的X轴坐标,则根据显示界面上最右边3D矩形模型的上边线段终点坐标和折叠角度,将最左边3D矩形模型插入到最右边3D矩形模型的尾部,更新显示界面上所有3D矩形模型的上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。
较佳的,根据接收的指令,处理模块1402用于在向右移动的过程中,判断显示界面上最左边3D矩形模型上边线段起点的X轴坐标是否大于显示界面左边界的X轴坐标;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标不大于显示界面左边界的X轴坐标,则继续向右移动;如果显示界面上最左边3D矩形模型上边线段起点的X轴坐标大于显示界面左边界的X轴坐标,则根据显示界面最左边3D矩形模型上边线段起点坐标和折叠角度,将最右边3D矩形模型插入到最左边3D矩形模型的首部,更新显示界面上所有3D矩形模型上边线段的起点坐标、终点坐标和折叠角度;其中,在周期性结构图中,每条线段与X轴正方向的夹角记为折叠角度。
本发明实施例采用WPF技术中的三维呈现技术,实现3D矩形模型在由折线构成的周期性结构图形上呈现三维折叠效果,并且能实现对材质进行向左或者向右无限循环移动,以及对某个材质进行播放、暂停、放大或缩小等操作,完整的实现了互动展示效果,提供了更好的视觉效果和用户体验。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。