00000016.htm
来自「水木清华BBS」· HTM 代码 · 共 205 行 · 第 1/2 页
HTM
205 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: vrml (3d), 信区: Java <BR>标 题: JAVA3D学习系列(16)--动画的生成(中) <BR>发信站: BBS 水木清华站 (Mon Apr 26 11:48:12 1999) <BR> <BR> JAVA3D学习系列(16)--动画的生成(中) <BR> <BR> <BR> 汕头大学机电系 张杰(<A HREF="mailto:jzhang@mailserv.stu.edu.cn)">jzhang@mailserv.stu.edu.cn)</A> <BR> <BR> <BR> 上一讲我们已经介绍了一个JAVA3D的内插对象: <BR>PositionInterpolator。本讲我们将继续介绍其它的 <BR>内插对象。 <BR> <BR>一. RotationInterpolator对象 <BR> RotationInterpolator的构造函数有两个: <BR> public RotationInterpolator(Alpha alpha, <BR> TransformGroup target) <BR> public RotationInterpolator(Alpha alpha, <BR> TransformGroup target, <BR> Transform3D axisOfRotation, <BR> float minimumAngle, <BR> float maximumAngle) <BR> <BR> RotationInterpolator的方法有: <BR> public void setMinimumAngle(float angle) <BR> public float getMinimumAngle() <BR> <BR> public void setMaximumAngle(float angle) <BR> public float getMaximumAngle() <BR> <BR> public void setAxisOfRotation(Transform3D axis) <BR> public Transform3D getAxisOfRotation() <BR> <BR> public void setTarget(TransformGroup target) <BR> public TransformGroup getTarget() <BR> <BR> public void processStimulus(Enumeration criteria) <BR> <BR> 利用这个对象,我们可以在给定的时间内,使某一个局部坐标系 <BR>在按照Alpha提供的方式绕着某一个轴旋转,它的作用类似于VRML <BR>的OrientationInterpolator节点。 <BR> RotationInterpolator的前三个参数和我们上一讲介绍的 <BR>PositionInterpolator对象的前三个参数概念一样: <BR> Alpha为我们提供了旋转方式。 <BR> target为我们提供了需要旋转的局部坐标系。 <BR> axisOfRotation确定了旋转轴的方位。 <BR> <BR>1. 第一个构造函数的运行结果 <BR> 假如我们利用的是第一个构造函数,我们所获得的最大角度为 <BR>2*PI,最小角度为0,坐标系绕着Y轴,按照Alpha给出的旋转方式 <BR>旋转。 <BR> <BR>2. 第二个构造函数的运行结果 <BR> 我们来看一下OrientationInterpolator第二个构造函数的后两 <BR>个参数,它们给出了旋转的最大最小的角度。 <BR> 下面的程序Rot.java利用了RotationInterpolator对象,使一个 <BR>立方体绕着自己的Y轴不停地旋转:先正转180度。停顿几秒后,又反 <BR>转180度,再停顿几秒钟。 <BR> <BR>//Rot.java <BR>import com.sun.j3d.utils.geometry.ColorCube; <BR>import java.applet.Applet; <BR>import java.awt.BorderLayout; <BR>import com.sun.j3d.utils.applet.MainFrame; <BR>import com.sun.j3d.utils.universe.*; <BR>import javax.media.j3d.*; <BR>import javax.vecmath.*; <BR> <BR>public class Rot extends Applet { <BR> private BranchGroup createSceneGraph( ) { <BR> float min = 0.0f; <BR> float max = (float) Math.PI; <BR> BranchGroup objRoot = new BranchGroup(); <BR> BoundingSphere bound=new BoundingSphere( <BR> new Point3d(0.0,0.0,0.0),50.); <BR> <BR> Transform3D tr=new Transform3D(); <BR> TransformGroup group=new TransformGroup(tr); <BR> group.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); <BR> group.addChild(new ColorCube()); <BR> <BR> Alpha xtranAlpha = new Alpha(-1, <BR> Alpha.DECREASING_ENABLE|Alpha.INCREASING_ENABLE, <BR> 0, 0,5000, (long)0.5, 5000, 5000,(long)0.5, 5000); <BR> RotationInterpolator tran = <BR> new RotationInterpolator(xtranAlpha, group, tr, <BR> min,max); <BR> tran.setSchedulingBounds(bound); <BR> group.addChild(tran); <BR> <BR> Color3f bgColor = new Color3f(1.0f, 1.0f, 1.0f); <BR> Background bg = new Background(bgColor); <BR>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?