CN103677540A - 一种3d虚拟现实翻页实现方法 - Google Patents

一种3d虚拟现实翻页实现方法 Download PDF

Info

Publication number
CN103677540A
CN103677540A CN201310711847.6A CN201310711847A CN103677540A CN 103677540 A CN103677540 A CN 103677540A CN 201310711847 A CN201310711847 A CN 201310711847A CN 103677540 A CN103677540 A CN 103677540A
Authority
CN
China
Prior art keywords
point
page
site
ordinate
angle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310711847.6A
Other languages
English (en)
Other versions
CN103677540B (zh
Inventor
叶伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201310711847.6A priority Critical patent/CN103677540B/zh
Publication of CN103677540A publication Critical patent/CN103677540A/zh
Application granted granted Critical
Publication of CN103677540B publication Critical patent/CN103677540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明公开一种3D虚拟现实翻页实现方法,包括步骤:S101、当接收到手指分离点坐标时,获取已知分离点的坐标;S102、根据接收到的手指分离点坐标和获取到的已知分离点坐标,计算页角下位点坐标、页角上位点坐标、额外页角上位点坐标;S103、根据条件将计算出的分离点坐标输入3D空间贝赛尔曲线方程计算翻页曲线坐标;S104、根据OpenGL的纹理坐标规则计算翻页曲线纹理坐标;S105、根据各分离点、翻页曲线坐标以及翻页曲线纹理坐标进行渲染。

Description

一种3D虚拟现实翻页实现方法
技术领域
本发明涉及一种3D虚拟现实翻页实现方法。
背景技术
随着计算机科学的迅猛发展,计算机图形学已从二维(2D)平面图形阶段发展到更加绚丽逼真、高质量的三维(3D)立体图形阶段,并广泛应用在娱乐、科学等各计算机应用领域,推动了虚拟现实、科学计算可视化等领域的进步。
现有的电子书应用方面,为了模拟翻页的逼真效果,存在翻页效果的实现方案,但现有技术通常仅实现:以平面模式将一个折角从页面一边移动到另一边;在限定的角度、起始点进行有限的模拟翻动;或者,虽然翻页的角度、起始点不受限制,但整个翻页过程仅限在二维平面内,无法表现翻页的三维效果。
发明内容
为解决现有技术中以平面模式将一个折角从页面一边移动到另一边;在限定的角度、起始点进行有限的模拟翻动;或者,虽然翻页的角度、起始点不受限制,但整个翻页过程仅限在二维平面内,无法表现翻页的三维效果的技术缺陷,本发明提供一种3D虚拟现实翻页实现方法。
本发明采用的第一个技术方案是:
提供一种3D虚拟现实翻页实现方法,包括步骤:S101、当接收到手指分离点坐标时,获取已知分离点的坐标;S102、根据接收到的手指分离点坐标和获取到的已知分离点坐标,计算页角下位点坐标、页角上位点坐标、额外页角上位点坐标;S103、根据条件将计算出的分离点坐标输入3D空间贝赛尔曲线方程计算翻页曲线坐标;S104、根据OpenGL的纹理坐标规则计算翻页曲线纹理坐标;S105、根据各分离点、翻页曲线坐标以及翻页曲线纹理坐标进行渲染。
本发明的有益效果是:区别于现有技术中以平面模式将一个折角从页面一边移动到另一边;在限定的角度、起始点进行有限的模拟翻动;或者,虽然翻页的角度、起始点不受限制,但整个翻页过程仅限在二维平面内,无法表现翻页的三维效果的技术缺陷,本发明提供一种3D虚拟现实翻页实现方法,通过使用3D空间贝赛尔曲线作为翻页曲线.进行仿真模拟,实现在任何起始点、任意角度,根据翻页手指所处的位置,实时计算出构成翻页曲面的其它分离点,再根据这些分离点与手指所处的位置,使用贝赛尔曲线模拟翻页曲线的弧线显示,以3D方法真实虚拟现实翻页的每个动作。
附图说明
图1是本发明一实施方式中一种3D虚拟现实翻页实现方法的执行流程图;
图2是手指分离点位于右下页面且不存在额外页角上位点的翻页渲染效果图;
图3是手指分离点位于右上页面且不存在额外页角上位点的翻页渲染效果图;
图4是手指分离点位于左下页面且不存在额外页角上位点的翻页渲染效果图;
图5是手指分离点位于右上页面且不存在额外页角上位点的翻页渲染效果图;
图6是手指分离点位于左下页面且存在额外页角上位点的翻页渲染效果图;
图7是手指分离点位于左上页面且存在额外页角上位点的翻页渲染效果图;
图8是手指分离点位于右下页面且存在额外页角上位点的翻页渲染效果图;
图9是手指分离点位于右上页面且存在额外页角上位点的翻页渲染效果图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
首先,对贝赛尔曲线的定义进行说明:
贝赛尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝赛尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝赛尔曲线工具,如Photoshop等。在Flash4中还没有完整的曲线工具,而在Flash5里面已经提供出贝赛尔曲线工具。
贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。它是应用于二维图形应用程序的数学曲线,曲线的定义有四个点:起始点、终止点(也称锚点)以及两个相互分离的中间点。滑动两个中间点,贝赛尔曲线的形状会发生变化。因此贝赛尔曲线是依据四个位置任意的点坐标绘制出的一条光滑曲线。
下面对本发明的技术方案进行详细阐述。
请参阅图1,是本发明一实施方式中一种3D虚拟现实翻页实现方法的执行流程图。该3D虚拟现实翻页实现方法包括步骤:
S101、当接收到手指分离点坐标时,获取已知分离点的坐标;
S102、根据接收到的手指分离点坐标和获取到的已知分离点坐标,计算页角下位点坐标、页角上位点坐标、额外页角上位点坐标;
S103、根据条件将计算出的分离点坐标输入3D空间贝赛尔曲线方程计算翻页曲线坐标;
S104、根据OpenGL的纹理坐标规则计算翻页曲线纹理坐标;
S105、根据各分离点、翻页曲线坐标以及翻页曲线纹理坐标进行渲染。
其中,在所述步骤S101前还包括:
S201、定义作为翻页曲线的贝赛尔曲线的相关参数,其中,所述相关参数包括曲线片段数、曲线片段有效长度、曲线数组,曲线数组包括多个分离点,分离点个数=曲线片段数-1,贝赛尔曲线片段有效长度=1/贝赛尔曲线片段数,所述分离点个数为4;
S202、根据已定义的所述相关参数来定义贝赛尔曲线方程,该贝赛尔曲线方程为:翻页曲线坐标==(1-t)3*起始分离点坐标+3t(1-t)2*第二分离点坐标+3t3*第三分离点坐标+t3*结束分离点坐标,t为当前点到起始分离点的曲线片段长度。
其中,所述步骤S102中“计算页角下位点坐标”具体包括:
S1021、判断手指分离点的横坐标所处位置情况,其中,页面包括左页面、右页面,左页面平均分割为左上页面和左下页面,右页面平均分割为右上页面和右下页面,所处位置情况包括位于左上页面、位于左下页面、位于右上页面、位于右下页面;当位于右下页面进入步骤S1022,当位与右上页面进入步骤S1023,当位于左下页面进入步骤S1024,当位于左上页面进入步骤S1025;
S1022、确定页角下位点纵坐标等于右下点纵坐标,根据页角下位点至手指分离点的距离与页角下位点到至右下点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标;
S1023、确定页角下位点纵坐标等于右上点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至右上点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标;
S1024、确定页角下位点纵坐标等于左下点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至左下点的距离相等使用空间两点间的距离公式计算得页角下位点横坐标;
S1025、确定页角下位点纵坐标等于左上点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至左上点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标。
其中,所述步骤S102中“计算页角上位点坐标、计算额外页角上位点坐标”步骤,具体包括下述步骤,具体地,所述步骤S1022、S1023后进入下述步骤S1026,所述步骤S1024、S1025后进入下述步骤S10210:
S1026、判断手指分离点的横坐标是否大于等于页角下位点的横坐标且小于等于右下点的横坐标,若是,进入步骤S1027计算页角上位点坐标,若否,进入步骤S1028;
S1027、当手指分离点位于右下页面时,确定页角上位点横坐标等于右下点横坐标,根据页角上位点与右下点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;当手指分离点位于右上页面时,确定页角上位点横坐标等于右上点横坐标,根据页角上位点与右上点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;
S1028、当手指分离点位于右下页面时,计算临时辅助变量tmp=cos(atan((y右下点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间下位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标分离点,然后判断额外页角上位点纵坐标是否大于等于右上点纵坐标,若是,则执行步骤S1027计算页角上位点坐标,若否,进入步骤S1029;当手指分离点位于右上页面时,计算临时辅助变量tmp=cos(atan((y右上点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间上位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标分离点,然后判断额外页角上位点纵坐标是否小于等于右下点纵坐标,若是,则执行步骤S1027计算页角上位点坐标,若否,进入步骤S1029;
S1029、当手指分离点位于右下页面时,确定页角上位点纵坐标等于右上点纵坐标,计算临时辅助变量tmp'=sin(atan((y右下点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间下位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,然后根据页角上位点至额外页角上位点的距离与页角上位点至右上点的距离相等,使用空间两点间的距离公式计算得页角上位点横坐标;当手指分离点位于右上页面时,确定页角上位点纵坐标等于右下点纵坐标,计算临时辅助变量tmp'=sin(atan((y右上点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间上位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,然后根据页角上位点至额外页角上位点的距离与页角上位点至右下点的距离相等,使用空间两点间的距离公式计算得其横坐标;
S10210、判断手指分离点的横坐标是否大于等于页角左下点的横坐标且小于等于页角下位点的横坐标,若是,进入步骤S10211计算页角上位点坐标,若否,进入步骤S10212;
S10211、当手指分离点位于左下页面时,确定页角上位点横坐标等于左下点横坐标,根据页角上位点与左下点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;当手指分离点位于左上页面时,确定页角上位点横坐标等于左上点横坐标,根据页角上位点与左上点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;
S10212、当手指分离点位于左下页面时,临时辅助变量tmp=cos(atan((左下点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间下位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标,判断额外页角上位点纵坐标是否大于等于左上点纵坐标,当判定额外页角上位点纵坐标大于等于左上点纵坐标时,执行步骤S10211计算页角上位点坐标,若否,进入步骤S10213;当手指分离点位于左下页面时,临时辅助变量tmp=cos(atan((左上点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间上位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标,判断额外页角上位点纵坐标是否小于等于左下点纵坐标,若是,执行步骤S10211计算页角上位点坐标,若否,进入步骤S10213;
S10213、手指分离点位于左下页面时,确定页角上位点坐标纵坐标等于左上点纵坐标,计算临时辅助变量tmp'=sin(atan((左下点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间下位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,根据页角上位点坐标至额外页角上位点的距离与页角上位点坐标至左上点的距离相等使用空间两点间的距离公式计算得页角上位点坐标横坐标;若手指分离点位于左上页面时,确定页角上位点纵坐标等于左下点纵坐标,计算临时辅助变量tmp'=sin(atan((左上点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标中间上位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,根据页角上位点至额外页角上位点的距离与页角上位点至左下点的距离相等,使用空间两点间的距离公式计算得页角上位点横坐标;
其中,所述步骤S103具体包括下述步骤,具体地,所述步骤S1027、S10211后执行下述步骤S1031,所述步骤S1029、S10213后执行下述步骤S1033:
S1031、把手指分离点作为起点、页角上位点作为终点、把手指分离点和页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得上位方向贝赛尔曲线分离点数组坐标,然后进入步骤S1032;
S1032、把手指分离点作为起始分离点、页角下位点作为结束分离点、手指分离点和页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得计算下位方向贝赛尔曲线分离点数组坐标;
S1033、把额外页角上位点作为起始分离点、页角上位点作为结束分离点、额外页角上位点和页角上位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得上位方向贝赛尔曲线分离点数组坐标,然后执行步骤S1034;
S1034、把手指分离点作为起始分离点、页角下位点作为结束分离点、手指分离点与页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得下位方向贝赛尔曲线分离点数组坐标。
其中,所述步骤S104具体包括下述步骤,具体地址,所述步骤S1032后执行下述步骤S1041,所述步骤S1034后执行下述步骤S1043:
S1041、计算上位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的u为1,根据公式TopBezierLineUV[i].v=(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])可计算得每个纹理点的v,然后执行步骤S1042;
S1042、计算下位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
BottomBezierLineUV[i].u=(BottomBezierLineVTX[i].x-BottomBezierLineVTX[0].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u;
S1043、计算上位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
TopBezierLineUV[i].u=1-(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面宽度(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u,然后执行步骤S1044;
S1044、计算下位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
BottomBezierLineUV[i].u=(BottomBezierLineVTX[i].x-BottomBezierLineVTX[0].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u。
其中,所述步骤S105具体包括下述步骤,根据各分离点坐标、上位方向贝赛尔曲线分离点数组坐标、下位方向贝赛尔曲线分离点数组坐标、上位贝赛尔曲线分离点纹理点数组坐标、下位贝赛尔曲线分离点纹理点数组坐标对页面进行渲染;具体地,渲染内容请结合图2-9,当手指分离点分别位于右下页面、右上页面、左下页面、左上页面时,所述步骤S1042后相应地分别进入下述步骤S1051、S1052、S1053、S1054,所述步骤S1044后相应地分别进入下述步骤S1055、S1056、S1057、S1058:
S1051、按照左页面分离点TL,MT,MB,BL,右页面分离点MT,TR,BR,MB,右页面的下一个页面分离点BLVtx,TLVtx,BR,翻页曲线角分离点BLVtx,HVtx,TLVtx的顺序渲染,可参看图2;
S1052、按照左页面分离点TL,MT,MB,BL,右页面分离点MT,TR,BR,MB,右页面的下一个页面分离点BLVtx,TR,TLVtx,翻页曲线角分离点BLVtx,TLVtx,HVtx的顺序渲染,可参看图3;
S1053、按照右页面分离点MT,TR,BR,MB,左页面分离点TL,MT,MB,BL,左页面的下一个页面分离点BLVtx,BL,TLVtx,翻页曲线角分离点BLVtx,TLVtx,HVtx的顺序渲染,可参看图4;
S1054、按照右页面分离点MT,TR,BR,MB,左页面分离点TL,MT,MB,BL,左页面的下一个页面分离点BLVtx,TLVtx,TL,翻页曲线角分离点BLVtx,HVtx,TLVtx的顺序渲染,可参看图5;
S1055、按照左页面分离点TL,MT,MB,BL,右页面分离点MT,TR,BR,MB,右页面的下一个页面分离点TLVtx,TR,BR,BLVtx,翻页曲线角分离点TP,TLVtx,BLVtx,HVtx的顺序渲染,可参看图6;
S1056、按照左页面分离点TL,MT,MB,BL,右页面分离点MT,TR,BR,MB,右页面的下一个页面分离点BLVtx,TR,BR,TLVtx,翻页曲线角分离点HVtx,BLVtx,TLVtx,TP的顺序渲染,可参看图7;
S1057、按照右页面分离点MT,TR,BR,MB,左页面分离点TL,MT,MB,BL,左页面的下一个页面分离点TL,TLVtx,BL,BLVtx,翻页曲线角分离点TLVtx,TP,HVtx,BLVtx的顺序渲染,可参看图8;
S1058、按照右页面分离点MT,TR,BR,MB,左页面分离点TL,MT,MB,BL,左页面的下一个页面分离点TL,BLVtx,TLVtx,BL,翻页曲线角分离点BLVt,HVtx,TP,TLVtx的顺序渲染,可参看图9。
下面通过具体实例对本发明的实现原理进行说明。
(一)、定义作为翻页曲线的贝赛尔曲线的相关参数、3D空间分离点及纹理点:
(1)定义翻页曲线相关参数,该相关参数包括曲线片段数、曲线片段有效长度、曲线数组:
定义曲线片段数BEZIER_LINE_SLICE,该片断数用于控制曲线的精度,可自行调整。
定义曲线数组,该曲线数组所包含的分离点数BEZIER_LINE_VTX_NUM=曲线片段数BEZIER_LINE_SLICE+1。
定义贝赛尔曲线片段有效长度BEZIER_LINE_SLICE_LENGTH为贝赛尔曲线片段数的倒数。
(2)定义3D空间分离点及纹理点
定义3D空间分离点Vtx3={x,y,z},其中x,y,z分别为3D空间X,Y,Z轴上的坐标值。
定义纹理点Texture2={u,v},其中u,v分别为纹理坐标空间水平方向、垂直方向上的坐标值。
(3)定义翻页曲线分离点数组以及纹理点数组:
定义下位方向贝赛尔曲线分离点数组:
BottomBezierLineVTX[BEZIER_LINE_VTX_NUM];
定义翻页曲线的上位方向贝赛尔曲线分离点数组:
TopBezierLineVTX[BEZIER_LINE_VTX_NUM];
定义翻页曲线的下位方向贝赛尔曲线分离点纹理点数组:
BottomBezierLineUV[BEZIER_LINE_VTX_NUM;
定义翻页曲线的上位方向贝赛尔曲线分离点纹理点数组:
TopBezierLineUV[BEZIER_LINE_VTX_NUM]。
请一并参阅图2、图6,图2是第一情况下翻页曲线及其空间分离点示意图,图6是第三情况下翻页曲线及其空间分离点示意图。其中,定义Vtx3类型的3D空间分离点类型及其坐标如下表一:
表一、分离点类型及其坐标
分离点类型及符号表示 分离点坐标 是否已知
书页的右下点BR {xBR,yRR,zBR}
书页的左上点TL {xTL,yTL,zTL}
书页的右上点TR {xTR,yTR,zTR}
书页的左下点BL {xBL,yBL,zBL}
书页的中间上位点MT {xMT,yMT,zMT}
书页的中间下位点MB {xMB,yMB,zMB}
书页的左中点ML {xML,yML,zML}
书页的右中点MR {xMR,yMR,zMR}
手指分离点HVtx {xHVTx,yHVTx,zHVTx}
页角下位点BLVtx {xBLVTx,yBLVTx,zBLVTx}
页角上位点TLVtx {xTLVTx,yTLVTx,zTLVTx}
额外页角上位点TP {xTP,yTP,zTP}
(二)、定义贝赛尔曲线生成方式函数:
定义3D空间贝赛尔曲线的生成方式函数Vtx=f(Vtx1,Vtx2,Vtx3,Vtx4,t),其中,Vtx1为曲线的起始分离点,Vtx2为曲线第一个控制分离点,Vtx3为曲线第二个控制分离点,Vtx4为曲线的结束分离点,t为当前点到Vtx1的曲线片段长度。
功能f定义如下:
临时辅助变量tmp1为1减去当前点到Vtx1的曲线片段长度,即tmp1=1-t;
临时辅助变量tmp2为tmp1的立方,即tmp2=(1-t)3;
临时辅助变量tmp3为当前点到Vtx1的曲线片段长度的平方,即tmp3=t2;
临时辅助变量tmp4为tmp1的平方,即tmp4=(1-t)2
临时辅助变量tmp5为当前点到Vtx1的曲线片段长度乘以tmp3,即tmp5=t3
临时辅助变量tmp6为当前点到Vtx1的曲线片段长度乘以3再乘以tmp4,即tmp6=3t(1-t)2
临时辅助变量tmp7为3乘以tmp3再乘以tmp1,即tmp7=3t3
最终生成贝赛尔曲线的生成方式函数:
Vtx=tmp2*Vtx1+tmp6*Vtx2+tmp7*Vtx3+tmp5*Vtx4=(1-t)3*Vtx1+3t(1-t)2*Vtx2+3t3*Vtx3+t3*Vtx4。
即:xVtx=(1  t)3×xVtx1+3t(1  t)2×xVtx2+3t3×xVtx3+t3×xVtx4;
yVtx=(1  t)3×yVtx1+3t(1  t)2×yVtx2+3t3×yVtx3+t3×yVtx4;
zVtx=(1 t)3×zVtx1+3t(1 t)2×zVtx2+3t3×zVtx3+t3×zVtx4;
(三)、当接收到手指分离点坐标{xHVTx,yHVTx,zHVTx}时,获取已知分离点的坐标
(四)、根据接收到的手指分离点坐标和已知分离点坐标,计算出包含页角下位点、页角上位点、额外页角上位点的全部其它分离点坐标,进而根据全部分离点坐标和3D空间贝赛尔曲线的生成方式函数计算翻页曲线坐标、根据OpenGL的纹理坐标规则计算翻页曲线纹理坐标:
这里以右下角开始翻页为例(其它角度翻页原理类似),在翻页的过程中,将会出现三种情况:第一种是手指分离点HVtx位于页角下位点BLVtx右边,同时额外页角上位方向点TP不存在的情况;第二种是手指分离点HVtx位于页角下位点BLVtx左边,同时额外页角上位方向点TP不存在的情况;第三种是手指分离点HVtx位于页角下位点BLVtx左边,同时额外页角上位方向点TP存在的情况。下面对于这三类情况下全部其它分离点坐标与翻页曲线坐标、以及翻页曲线纹理坐标的计算原理进行分别讨论。
1、手指分离点HVtx位于页角下位点BLVtx右边,即xHVTx≥xBLVtx,同时额外页角上位方向点TP不存在的情况:
请参阅图2,是第一情况下翻页曲线及其空间分离点示意图。
(1.1)计算全部其它分离点坐标
计算xBLVtx和yTLVtx
首先,读取手指分离点HVtx坐标{xHVTx,yHVTx,zHVTx}、右下点BR坐标{xBR,yBR,zBR},其中,yBR=yBLVtx,xBR=xTLVtx
利用从分离点HVtx到分离点BLVtx的空间长度,分离点BR至分离点BLVtx的空间长度,基于空间两点间的距离我们可以得到一个二次方程,从而计算得到分离点BLVtx的x域值。接下来可以注意到,分离点BR、分离点BLVtx、分离点TLVtx在3D空间会构成一个三角形,在分离点BLVtx计算得出后,分离点BR为已知量,同时分离点TLVtx的x域值与分离点BR相等,在此空间使用三角形定律可以获取一个二次方程,从而计算出分离点TLVtx的y域值。
将HVtx={xHVTx,yHVTx,zHVTx}、BR={xBR,yRR,zBR}、yRR=yBLVtx、xBR=xTLVtx代入公式组:
(xHVTx-xBLVtx)2+(yHVTx-yBLVtx)2=(xBR-xBLVtx)2+(yBR-yBLVtx)2;
((xHVTx-xBR)2+(yHVTx-yBR)2)2+((xBLVTx-xBR)2+(yBLVTx-yBR)2)2=((xHVTx-xBLVTx)2+(yHVTx-yBLVTx)2)2
计算出xBLVtx、yTLVtx
xBLVtx=(xBL 2-xHVTx 2-(yHVTx-yBL)2)÷(2×(xBL-xHVTx));
yTLVtx=(yBLVtT 2  yHVTx 2-(xHVTx  xBLVTx)2)÷(2×(yBLVTx-yHVTx));
由于要模拟翻页的曲线效果,页角下位点BLVtx可以往右偏移Δt,页角上位点TLVtx可以往下偏移Δt,即增大xBLVtx、减小yTLVtx
(1.2)根据页角下位点BLVtx、页角上位点TLVtx、手指分离点HVtx、右下点BR各自的x、y坐标值,计算出翻页曲线坐标:
将手指分离点HVtx与页角下位点BLVtx作为翻页曲线的下位方向贝赛尔曲线分离点数组BottomBezierLineVTX的起始分离点Vtx1与结束分离点Vtx4,将手指分离点HVtx与页角上位点TLVtx作为翻页曲线的上位方向贝赛尔曲线分离点数组TopBezierLineVTX的起始分离点Vtx1与结束分离点Vtx14。根据3D空间贝赛尔曲线的生成方式函数Vtx=tmp2*Vtx1+tmp6*Vtx2+tmp7*Vtx3+tmp5*Vtx4,分别计算下位方向贝赛尔曲线、上位方向贝赛尔曲线各自其余的翻页曲线坐标。
(1.2.1)下位方向贝赛尔曲线分离点坐标
设分离点MVtx,则xMVtx=(xHVtx+xBLVtx)÷2,yMVtx=(yHVtx+yBLVtx)÷2,分离点MVtx'=MVtx,T为当前点到HVtx的距离,根据贝赛尔曲线公式Vtx=f(Vtx1,Vtx2,Vtx3,Vtx4,t),把HVtx、MVtx、MVtx'、BLVtx、T代入贝赛尔曲线公式得到:
Vtx=f(HVtx,MVtx,MVtx',BLVtx,T),下位方向贝赛尔曲线分离点数组BottomBezierLineVTX的每个分离点即计算得出。
(1.2.2)上位方向贝赛尔曲线分离点坐标
设分离点MVtx,则xMVtx=(xHVtx+xTLVtx)÷2,yMVtx=(yHVtx+yTLVtx)÷2,分离点MVtx'=MVtx,T为当前点到HVtx的距离,根据贝赛尔曲线公式Vtx=f(Vtx1,Vtx2,Vtx3,Vtx4,t),把HVtx、MVtx、MVtx'、TLVtx、T代入贝赛尔曲线公式得到:
Vtx=f(HVtx,MVtx,MVtx',TLVtx,T),下位方向贝赛尔曲线分离点数组TopBezierLineVTX的每个分离点即计算得出。
(1.3)计算翻页曲线纹理坐标:
根据3D纹理坐标规则(这里使用OpenGL的纹理坐标规则),下位方向贝赛尔曲线纹理点数组BottomBezierLineUV的每个纹理点的v为0,下位方向贝赛尔曲线纹理点数组BottomBezierLineUV的每个纹理点的u可根据横纵向差值计算取得,即为分离点数组BottomBezierLineUV的起始分离点的x坐标值减去BottomBezierLineUV中索引对应的分离点的x坐标值后的值占页面宽度的值,然后1减去这个值就是所取得的数值,其中索引为数组内每个点在数组里的顺序,如第一个点索引为0,第二个点索引为为1,…第n个点索引为为n-1,索引∈[0,BEZIER_LINE_VTX_NUM-1]:
BottomBezierLineUV[i].u=(BottomBezierLineVTX[i].x-BottomBezierLineVTX[0].x)÷页面高度+Δt
上位方向贝赛尔曲线纹理点数组TopBezierLineUV的每个纹理点的u为1,TopBezierLineUV的每个纹理点的v也可根据横纵向差值计算取得,即为TopBezierLineVTX中索引对应的分离点的x坐标值减去TopBezierLineUV的起始分离点的x坐标值后的值占页面高度的值,其中索引∈[0,BEZIER_LINE_VTX_NUM-1]:
TopBezierLineUV[i].v=(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面高度+Δt
2、手指分离点HVtx位于页角下位点BLVtx左边,即xHVTx<xBLVtx,同时额外页角上位方向点TP不存在,即yTP>yTR的情况:
第二种情况与第三种情况空间各分离点的分布极为相似,主要不同之处是额外页角上位方向点TP存在与否,TP不存在则翻页处于第二种情况下,TP若存在则翻页处于第三种情况中。
(2.1)当xHVTx<xBLVtx时,判断yTP≤yTR是否成立,若成立则不存在额外页角上位方向点:
根据三角函数公式计算右下点BR和手指分离点HVtx在纵方向上的差值占页角下位点BLVtx和手指分离点MB在横方向上的差值的值反正切;
定义一个临时辅助变量,这个临时辅助变量大小为前面计算所得的反正切三角余弦值,然后把这个临时变量乘以页面的高度再加上分离点HVtx的y坐标值就可以计算得到分离点TP的y坐标值;
临时辅助变量tmp=cos(atan((yBR  yHVTx)÷(xHVTx  xMB)));
yTP=tmp×页面高度+yHVTx;
把分离点TP与分离点TR进行比较,若分离点TP的y坐标值大于分离点TR的y坐标值,则翻页处于第二种情况,反之则翻页处于第三种情况,即存在额外页角上位方向点TP。
(2.2)计算全部其它分离点坐标
计算xBLVtx和yTLVtx
确定为第二种情况后,接下来可以在3D空间观察到,从分离点HVtx引一条线垂直至页面底部(也就是页角下位点BLVtx直线),设形成的交点为TmpVtx。这种情况下,分离点HVtx已知,交点TmpVtx的x坐标值与分离点HVtx相同,交点TmpVtx的y坐标值与右下点BR相同,页角下位点BLVtx的y坐标值与右下点BR相同,使用三角形定律可以获取一个二次方程,从而计算出页角下位点BLVtx的x坐标值。而处于第二种情况的页角上位点TLVtx的计算方法与第一种一致,这里不再赘述。
((xHVTx-xTmpVtx)2+(yHVTx-yTmpVtx)2)2+((xTmpVtx-xBLVtx)2+(yTmpVtx-yBLVtx)2)2=((xHVTx-xBLVTx)2+(yHVTx-yBLVTx)2)2;
XBLVtx=(yTmpVtx 2  yHVTx 2-(xHVTx  xTmpVtx)2)÷(2×(yTmpVtx-yHVTx));
(2.3)计算翻页曲线坐标和纹理坐标:
在这些分离点计算完毕后,就具备条件计算翻页曲线分离点及其纹理坐标。当处于第二种情况时,翻页曲线分离点及其纹理坐标的计算方法与第一种情况相同,具体可参看第一种情况下的计算方法。
3、手指分离点HVtx位于页角下位点BLVtx左边,即xHVTx<xBLVtx,同时额外页角上位方向点TP存在,即yTP≤yTR的情况:
请参阅图6,是第三情况下翻页曲线及其空间分离点示意图。
(3.1)根据第二种情况描述的方法,可计算出分离点TP的y坐标值,这时其小于分离点TR的y坐标值。
(3.2)计算其它分离点坐标
计算xTP、xBLVtx和xTLVtx
现在讨论如何计算分离点TP的x坐标值,在计算分离点TR的y坐标值时我们定义了一个临时变量保存反正切三角余弦值,现在我们仍然可定义一个第二临时变量保存三角正弦值,然后把这个临时变量乘以负的页面高度,所得的值加上分离点HVtx的x坐标值最后就计算出分离点TP的x坐标值。
第二临时辅助变量tmp'=sin(atan((yBR-yHVTx)÷(xHVTx xMB)));
xTP=tmp'×(-页面高度)+xHVTx;
通过分析各分离点的分布,可以发现把右下点BR的x坐标值平方与分离点HVtx的x坐标值平方在横方向上的差值增添右下点BR与分离点TR在纵方向上的差值的平方,扣除分离点HVtx与分离点TR在纵方向上的差值的平方,再按照右下点BR与分离点HVtx在横方向上的差值的两倍分配数值就可以计算得页角上位点TLVtx的x坐标值。页角上位点TLVtx的y坐标与分离点TR的一致。对于页角下位点BLVtx,其计算方法与第一种情况相同,详可参看第一种情况下的计算内容。
xTLVtx=(xBL 2  xHVTx 2+(yBL  yTL)2-(yHVTx-yTL)2)÷(2×(xBL-xHVTx));
(3.3)计算翻页曲线坐标及纹理坐标:
在这些分离点计算完毕后,就具备条件计算翻页曲线坐标及纹理坐标。
对于分离点数组BottomBezierLineVTX与纹理点数组BottomBezierLineUV,其计算方法与第一种情况一致。
现在来分析分离点数组TopBezierLineVTX的计算,通过对3D空间各分离点的位置关系,可以把分离点TP与页角上位点TLVtx对待为分离点数组TopBezierLineVTX的起始分离点与结束分离点,根据3D空间贝赛尔曲线的生成方式函数,分别计算其各自其余的翻页曲线分离点。
设分离点MVtx,xMVtx=(xTP+xTLVtx)÷2,yMVtx=(yTP+yTLVtx)÷2,分离点MVtx'=MVtx,T为当前点到TP的距离,根据贝赛尔曲线公式Vtx=f(Vtx1,Vtx2,Vtx3,Vtx4,t),把TP、MVtx、MVtx'、TLVtx、T代入得Vtx=f(TP,MVtx,MVtx',TLVtx,T),分离点数组TopBezierLineVTX的每个分离点计算得出。
在翻页曲线分离点计算完成后,计算获取纹理坐标,根据3D纹理坐标规则(这里使用OpenGL的纹理坐标规则),纹理点数组TopBezierLineUV的每个纹理点的u可根据横纵向差值计算取得,即为分离点数组TopBezierLineVTX中索引对应的分离点的x坐标值减去分离点数组TopBezierLineVTX起始分离点的x坐标值后的值占页面宽度的值,然后用1减去这个值就是所要求的数值,其中索引∈[0,BEZIER_LINE_VTX_NUM-1],纹理点数组TopBezierLineUV的每个纹理点的v为0。
TopBezierLineUV[i].u=1-(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面宽度;
(四)、根据翻页曲线纹理坐标以及翻页曲线坐标,按照左页面、右页面、右页面的下一个页面、翻页曲线角的顺序渲染,如此,随着手指(鼠标)在页面上的移动,三维翻页效果就会显示。左页面TL,MT,MB,BL,右页面MT,TR,BR,MB,右页面的下一个页面(TP不存在)BLVtx,TLVtx,BR/右页面的下一个页面(TP存在)TLVtx,TR,BR,BLVtx,翻页曲线面(TP不存在)BLVtx,HVtx,TLVtx/翻页曲线面(TP存在)TPVtx,TLVtx,BLVtx,HVtx。TP不存在的情况请参看图2,TP存在的情况请参看图6。
区别于现有技术中以平面模式将一个折角从页面一边移动到另一边;在限定的角度、起始点进行有限的模拟翻动;或者,虽然翻页的角度、起始点不受限制,但整个翻页过程仅限在二维平面内,无法表现翻页的三维效果的技术缺陷,本发明提供一种3D虚拟现实翻页实现方法,通过使用3D空间贝赛尔曲线作为翻页曲线.进行仿真模拟,实现在任何起始点、任意角度,根据翻页手指所处的位置,实时计算出构成翻页曲面的其它分离点,再根据这些分离点与手指所处的位置,使用贝赛尔曲线模拟翻页曲线的弧线显示,以3D方法真实虚拟现实翻页的每个动作。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (7)

1.一种3D虚拟现实翻页实现方法,其特征在于,包括步骤:
S101、当接收到手指分离点坐标时,获取已知分离点的坐标;
S102、根据接收到的手指分离点坐标和获取到的已知分离点坐标,计算页角下位点坐标、页角上位点坐标、额外页角上位点坐标;
S103、根据条件将计算出的分离点坐标输入3D空间贝赛尔曲线方程计算翻页曲线坐标;
S104、根据OpenGL的纹理坐标规则计算翻页曲线纹理坐标;
S105、根据各分离点、翻页曲线坐标以及翻页曲线纹理坐标进行渲染。
2.根据权利要求1所述的一种3D虚拟现实翻页实现方法,其特征在于,在所述步骤S101前还包括:
S201、定义作为翻页曲线的贝赛尔曲线的相关参数,其中,所述相关参数包括曲线片段数、曲线片段有效长度、曲线数组,曲线数组包括多个分离点,分离点个数=曲线片段数-1,贝赛尔曲线片段有效长度=1/贝赛尔曲线片段数,所述分离点个数为4;
S202、根据已定义的所述相关参数来定义贝赛尔曲线方程,该贝赛尔曲线方程为:翻页曲线坐标==(1-t)3*起始分离点坐标+3t(1-t)2*第二分离点坐标+3t3*第三分离点坐标+t3*结束分离点坐标,t为当前点到起始分离点的曲线片段长度。
3.根据权利要求2所述的一种3D虚拟现实翻页实现方法,其特征在于,所述步骤S102中“计算页角下位点坐标”具体包括:
S1021、判断手指分离点的横坐标所处位置情况,其中,页面包括左页面、右页面,左页面平均分割为左上页面和左下页面,右页面平均分割为右上页面和右下页面,所处位置情况包括位于左上页面、位于左下页面、位于右上页面、位于右下页面;当位于右下页面进入步骤S1022,当位与右上页面进入步骤S1023,当位于左下页面进入步骤S1024,当位于左上页面进入步骤S1025;
S1022、确定页角下位点纵坐标等于右下点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至右下点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标;
S1023、确定页角下位点纵坐标等于右上点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至右上点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标;
S1024、确定页角下位点纵坐标等于左下点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至左下点的距离相等使用空间两点间的距离公式计算得页角下位点横坐标;
S1025、确定页角下位点纵坐标等于左上点纵坐标,根据页角下位点至手指分离点的距离与页角下位点至左上点的距离相等,使用空间两点间的距离公式计算得页角下位点横坐标。
4.根据权利要求3所述的一种3D虚拟现实翻页实现方法,其特征在于,所述步骤S102中“计算页角上位点坐标、计算额外页角上位点坐标”步骤,具体包括下述步骤,其中,所述步骤S1022、S1023后进入下述步骤S1026,所述步骤S1024、S1025后进入下述步骤S10210:
S1026、判断手指分离点的横坐标是否大于等于页角下位点的横坐标且小于等于右下点的横坐标,若是,进入步骤S1027计算页角上位点坐标,若否,进入步骤S1028;
S1027、当手指分离点位于右下页面时,确定页角上位点横坐标等于右下点横坐标,根据页角上位点与右下点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;当手指分离点位于右上页面时,确定页角上位点横坐标等于右上点横坐标,根据页角上位点与右上点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;
S1028、当手指分离点位于右下页面时,计算临时辅助变量tmp=cos(atan((y右下点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间下位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标分离点,然后判断额外页角上位点纵坐标是否大于等于右上点纵坐标,若是,则执行步骤S1027计算页角上位点坐标,若否,进入步骤S1029;当手指分离点位于右上页面时,计算临时辅助变量tmp=cos(atan((y右上点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间上位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标分离点,然后判断额外页角上位点纵坐标是否小于等于右下点纵坐标,若是,则执行步骤S1027计算页角上位点坐标,若否,进入步骤S1029;
S1029、当手指分离点位于右下页面时,确定页角上位点纵坐标等于右上点纵坐标,计算临时辅助变量tmp'=sin(atan((y右下点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间下位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,然后根据页角上位点至额外页角上位点的距离与页角上位点至右上点的距离相等,使用空间两点间的距离公式计算得页角上位点横坐标;当手指分离点位于右上页面时,确定页角上位点纵坐标等于右下点纵坐标,计算临时辅助变量tmp'=sin(atan((y右上点 手指分离点纵坐标分离点)÷(手指分离点横坐标分离点 中间上位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,然后根据页角上位点至额外页角上位点的距离与页角上位点至右下点的距离相等,使用空间两点间的距离公式计算得其横坐标;
S10210、判断手指分离点的横坐标是否大于等于页角左下点的横坐标且小于等于页角下位点的横坐标,若是,进入步骤S10211计算页角上位点坐标,若否,进入步骤S10212;
S10211、当手指分离点位于左下页面时,确定页角上位点横坐标等于左下点横坐标,根据页角上位点与左下点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;当手指分离点位于左上页面时,确定页角上位点横坐标等于左上点横坐标,根据页角上位点与左上点、页角下位点构成的三角形空间使用三角形定律计算得页角上位点纵坐标;
S10212、当手指分离点位于左下页面时,临时辅助变量tmp=cos(atan((左下点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间下位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标,判断额外页角上位点纵坐标是否大于等于左上点纵坐标,当判定额外页角上位点纵坐标大于等于左上点纵坐标时,执行步骤S10211计算页角上位点坐标,若否,进入步骤S10213;当手指分离点位于左下页面时,临时辅助变量tmp=cos(atan((左上点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间上位点横坐标))),额外页角上位点纵坐标=tmp×页面高度+手指分离点纵坐标,判断额外页角上位点纵坐标是否小于等于左下点纵坐标,若是,执行步骤S10211计算页角上位点坐标,若否,进入步骤S10213;
S10213、手指分离点位于左下页面时,确定页角上位点坐标纵坐标等于左上点纵坐标,计算临时辅助变量tmp'=sin(atan((左下点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标 中间下位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,根据页角上位点坐标至额外页角上位点的距离与页角上位点坐标至左上点的距离相等使用空间两点间的距离公式计算得页角上位点坐标横坐标;若手指分离点位于左上页面时,确定页角上位点纵坐标等于左下点纵坐标,计算临时辅助变量tmp'=sin(atan((左上点纵坐标 手指分离点纵坐标)÷(手指分离点横坐标中间上位点横坐标))),额外页角上位点横坐标=tmp'×(-页面高度)+手指分离点横坐标,根据页角上位点至额外页角上位点的距离与页角上位点至左下点的距离相等,使用空间两点间的距离公式计算得页角上位点横坐标。
5.根据权利要求3或4任意一项所述的一种3D虚拟现实翻页实现方法,其特征在于,所述步骤S103具体包括下述步骤,其中,所述步骤S1027、S10211后执行下述步骤S1031,所述步骤S1029、S10213后执行下述步骤S1033:
S1031、把手指分离点作为起始分离点、页角上位点作为结束分离点、把手指分离点和页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得上位方向贝赛尔曲线分离点数组坐标,然后进入步骤S1032;
S1032、把手指分离点作为起始分离点、页角下位点作为结束分离点、手指分离点和页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得计算下位方向贝赛尔曲线分离点数组坐标;
S1033、把额外页角上位点作为起始分离点、页角上位点作为结束分离点、额外页角上位点和页角上位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得上位方向贝赛尔曲线分离点数组坐标,然后执行步骤S1034;
S1034、把手指分离点作为起始分离点、页角下位点作为结束分离点、手指分离点与页角下位点的距离中间点同时作为第二、第三分离点代入贝塞尔曲线方程计算得下位方向贝赛尔曲线分离点数组坐标。
6.根据权利要求5所述的一种3D虚拟现实翻页实现方法,其特征在于,所述步骤S104具体包括下述步骤,其中,所述步骤S1032后执行下述步骤S1041,所述步骤S1034后执行下述步骤S1043:
S1041、计算上位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的u为1,根据公式TopBezierLineUV[i].v=(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])可计算得每个纹理点的v,然后执行步骤S1042;
S1042、计算下位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
BottomBezierLineUV[i].u=(BottomBezierLineVTX[i].x-BottomBezierLineVTX[0].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u;
S1043、计算上位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
TopBezierLineUV[i].u=1-(TopBezierLineVTX[0].x-TopBezierLineVTX[i].x)÷页面宽度(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u,然后执行步骤S1044;
S1044、计算下位贝赛尔曲线分离点纹理点数组坐标,其中每个纹理点的v为0,根据公式
BottomBezierLineUV[i].u=(BottomBezierLineVTX[i].x-BottomBezierLineVTX[0].x)÷页面高度+Δt(i∈[0,BEZIER_LINE_VTX_NUM-1])计算得每个纹理点的u。
7.根据权利要求6所述的一种3D虚拟现实翻页实现方法,其特征在于,所述步骤S105具体包括下述步骤,根据各分离点坐标、上位方向贝赛尔曲线分离点数组坐标、下位方向贝赛尔曲线分离点数组坐标、上位贝赛尔曲线分离点纹理点数组坐标、下位贝赛尔曲线分离点纹理点数组坐标对页面进行渲染。
CN201310711847.6A 2013-12-20 2013-12-20 一种3d虚拟现实翻页实现方法 Active CN103677540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310711847.6A CN103677540B (zh) 2013-12-20 2013-12-20 一种3d虚拟现实翻页实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310711847.6A CN103677540B (zh) 2013-12-20 2013-12-20 一种3d虚拟现实翻页实现方法

Publications (2)

Publication Number Publication Date
CN103677540A true CN103677540A (zh) 2014-03-26
CN103677540B CN103677540B (zh) 2016-10-19

Family

ID=50315288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310711847.6A Active CN103677540B (zh) 2013-12-20 2013-12-20 一种3d虚拟现实翻页实现方法

Country Status (1)

Country Link
CN (1) CN103677540B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020211010A1 (zh) * 2019-04-17 2020-10-22 深圳市柔宇科技有限公司 一种电子文档的翻页方法、显示终端以及存储介质
CN115016603A (zh) * 2022-06-29 2022-09-06 深圳传音控股股份有限公司 交互方法、智能终端及存储介质
CN115409930A (zh) * 2022-10-31 2022-11-29 深圳市趣推科技有限公司 电子页面的卷轴模拟方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102221980A (zh) * 2011-07-29 2011-10-19 深圳芯智汇科技有限公司 电子书模拟翻页效果实现方法及系统
CN102541358A (zh) * 2010-12-30 2012-07-04 福建星网视易信息系统有限公司 滑动点击响应的3d视角变换系统及方法
JP2012169869A (ja) * 2011-02-14 2012-09-06 For-A Co Ltd ステレオ3d映像特殊効果装置
CN102981717A (zh) * 2012-11-12 2013-03-20 东莞宇龙通信科技有限公司 终端和触摸按键锁定方法
CN103339589A (zh) * 2011-03-17 2013-10-02 露露软件公司 用于三维观看的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541358A (zh) * 2010-12-30 2012-07-04 福建星网视易信息系统有限公司 滑动点击响应的3d视角变换系统及方法
JP2012169869A (ja) * 2011-02-14 2012-09-06 For-A Co Ltd ステレオ3d映像特殊効果装置
CN103339589A (zh) * 2011-03-17 2013-10-02 露露软件公司 用于三维观看的方法
CN102221980A (zh) * 2011-07-29 2011-10-19 深圳芯智汇科技有限公司 电子书模拟翻页效果实现方法及系统
CN102981717A (zh) * 2012-11-12 2013-03-20 东莞宇龙通信科技有限公司 终端和触摸按键锁定方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020211010A1 (zh) * 2019-04-17 2020-10-22 深圳市柔宇科技有限公司 一种电子文档的翻页方法、显示终端以及存储介质
CN113366421A (zh) * 2019-04-17 2021-09-07 深圳市柔宇科技股份有限公司 一种电子文档的翻页方法、显示终端以及存储介质
CN115016603A (zh) * 2022-06-29 2022-09-06 深圳传音控股股份有限公司 交互方法、智能终端及存储介质
CN115409930A (zh) * 2022-10-31 2022-11-29 深圳市趣推科技有限公司 电子页面的卷轴模拟方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN103677540B (zh) 2016-10-19

Similar Documents

Publication Publication Date Title
CN107633123B (zh) 一种用于光滑粒子流体动力学模拟出血及处理加速的方法
US10664628B2 (en) Interactive surface alignment
KR101552827B1 (ko) 3차원 객체 모델의 분할 방법
CN103677540A (zh) 一种3d虚拟现实翻页实现方法
CN107248192A (zh) 立体图形绘制方法、装置、设备及存储介质
KR101338918B1 (ko) 지하시설물 3차원 모델링 시스템 및 방법
CN102663805B (zh) 一种基于投影的视锥体裁剪的方法
CN106875487B (zh) 一种基于邻域作用力的地质六面体网格平滑方法
CN103020351A (zh) 一种飞机位姿的三维实时显示方法
CN105653881A (zh) 基于多密度层次的流场可视化方法
JP5834317B2 (ja) 誤差画像生成方法
JP2014503905A5 (zh)
McDougal et al. Water-tight membranes from neuronal morphology files
CN105205206A (zh) 一种复杂平面片交线段的求取方法
CN104794745A (zh) 膛线身管三维等几何混合单元建模方法
CN110046335B (zh) 一种外形检测报告的快速生成方法
JP6915237B2 (ja) 情報処理装置、シミュレータ結果表示方法、及びシミュレータ結果表示プログラム
JP5592286B2 (ja) 計測点からの円筒情報の抽出方法
WO2021154273A1 (en) Generating 3d printing points using an approximate mathematical expression of a rqb curve
CN107291725B (zh) 生成多向树的方法和装置
Yan et al. Unbiased sampling and meshing of isosurfaces
Kudela et al. Viscous flow modeling using the vortex particles method
CN102968821A (zh) 一种二次曲线趋势外推精确智能延伸方法
CN107292938A (zh) 一种生成虚圆滑曲线的方法和装置
CN118262060A (zh) 一种三维地层界面构建方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant