- 23
- 0
- 约5.95千字
- 约 5页
- 2017-08-31 发布于天津
- 举报
基于VRML的虚拟太阳系的设计与实现.pdf
基于VRML 的虚拟太阳系的设计与实现
谢方立
摘 要:VRML 是一种建模语言,用来在 Web 环境中描述三维物体及其行为,从而在网络环
境中构建虚拟场景(Virtual World)。VRML 的基本目标是建立因特网上的交互式三维多媒
体环境。本文基于VRML 进行虚拟静态太阳系的设计,由于时间限制,文中把八大行星的运
行轨迹统一作圆形轨迹处理。
一、太阳系简介[1]
太阳系是以太阳为中心,和所有受到太阳的重力约束天体的集合体:8 颗行星(2006 年
冥王星被去掉,因为其运动轨迹与其它八大行星不同,所以只剩下金星、水星、地球、火星、
土星、木星、天王星、海王星)、至少 165 颗已知的卫星、5 颗已经辨认出来的矮行星和数
以亿计的太阳系小天体。
也就是说,轨道环绕太阳的天体有三类:行星、矮行星及太阳系小天体。由于行星相比
较于矮行星、太阳系小天体而言,它们拥有足够的质量使本身的形状成为球体,并且有能力
清空邻近轨道的小天体。因此本文主要针对八大行星及太阳进行虚拟。另外,行星的运行轨
道复杂多变,文中统一作简化处理,将行星椭圆形的运行轨道看作是圆形,并且忽略轨道间
的距离差异。
二、虚拟太阳系的设计
对太阳系进行虚拟要解决的问题主要有两点:用球体来表示太阳和行星、用圆形表示天
体的运行轨道。
球体可以用geometry Sphere 语句直接实现,共需设计9 个球体。考虑到默认的球心位
置是坐标系原点,因此除了太阳之外,需要用Transform 语句来改变他八个行星的球心位置。
由于VRML 中没有现成圆形节点,因此圆形的实现需要借助点集合节点PointSet 。本文
选取72 个点的连线来表示一个“圆形”,每个点(a,b )由以下公式得出:
a=r*sin(5º*n),b=r*cos(5º*n),
其中n=1,2,…,72.本文忽略行星轨道间距的差异,取r=0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0.
为了让虚拟的太阳系更具观赏性,对球体使用相应天体的静态图片作造型纹理,并利
用点集合节点设计若干个离散的点,用于代表太阳系中不计其数的“小星星”,增强虚拟效
果。
三、虚拟太阳系的实现
3.1 圆形轨道的实现
借助Excel 来获得所需要的72*8 个点. 由于在XOY 坐标平面上画圆,因此所有的点的
Z 轴坐标都为0. 以r=2.0 为例,在VrmlPad 中输入如下代码:
Shape { 1.99 0.17 0,
appearance Appearance {} 1.97 0.35 0,
geometry IndexedLineSet { 1.93 0.52 0,
coord Coordinate { 1.88 0.68 0,
point 1.81 0.85 0,
[ 1.73 1.00 0,
1.64 1.15 0, -0.52 -1.93 0,
1.53 1.29 0, -0.35 -1.97 0,
1.41 1.41 0, -0.17 -1.99 0,
1.29 1.53 0, 0.00 -2.00 0,
1.15 1.64 0, 0.17 -1.99 0,
1.00 1.73 0, 0.35 -1.97 0,
0.85 1.81 0, 0.52 -1.93 0,
0.68 1.88 0, 0.68
原创力文档

文档评论(0)