2 * Copyright (c) 2003-2009 jMonkeyEngine
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 package jmetest.scene;
35 import com.jme.app.SimpleGame;
36 import com.jme.bounding.BoundingSphere;
37 import com.jme.math.Quaternion;
38 import com.jme.math.Vector3f;
39 import com.jme.scene.Node;
40 import com.jme.scene.shape.Sphere;
43 * @version $Id: TestRotateAboutPoint.java,v 1.1 2007/08/03 00:04:00 nca Exp $
45 public class TestRotateAboutPoint extends SimpleGame {
46 private Quaternion rotQuat1 = new Quaternion();
47 private Quaternion rotQuat2 = new Quaternion();
49 private float angle = 0;
50 private Vector3f axis = new Vector3f(0, 1, 0);
52 private Sphere moon1, moon2;
53 private Node pivotNode1, pivotNode2;
56 * Entry point for the test,
59 public static void main(String[] args) {
60 TestRotateAboutPoint app = new TestRotateAboutPoint();
61 app.setConfigShowMode(ConfigShowMode.AlwaysShow);
65 protected void simpleUpdate() {
67 angle = angle + (tpf * 1);
72 rotQuat1.fromAngleAxis(angle, axis);
73 pivotNode1.setLocalRotation(rotQuat1);
75 rotQuat2.fromAngleAxis(angle * 2, axis);
76 pivotNode2.setLocalRotation(rotQuat2);
82 * @see com.jme.app.SimpleGame#initGame()
84 protected void simpleInitGame() {
85 display.setTitle("jME - Rotation About a Point");
88 s = new Sphere("Planet", 25, 25, 25);
89 s.setModelBound(new BoundingSphere());
91 rootNode.attachChild(s);
94 moon1 = new Sphere("Moon 1",25, 25, 10);
95 moon1.setModelBound(new BoundingSphere());
96 moon1.updateModelBound();
97 moon1.setLocalTranslation(40, 0, 0);
98 pivotNode1 = new Node("PivotNode 1");
99 pivotNode1.attachChild(moon1);
101 moon2 = new Sphere("Moon 2",25, 25, 7.5f);
102 moon2.setModelBound(new BoundingSphere());
103 moon2.updateModelBound();
104 moon2.setLocalTranslation(60, 0, 0);
105 pivotNode2 = new Node("PivotNode 2");
106 pivotNode2.attachChild(moon2);
108 rootNode.attachChild(pivotNode1);
109 rootNode.attachChild(pivotNode2);