📄 worldobjectstate.java.svn-base
字号:
package base;import java.util.*;/** * CSCI 201 FAA Project - Spring 2009 - Team 4c * * Describes the state of a world object. * * @author Josh Villbrandt */public class WorldObjectState { // Private public Date thisUpdate, lastUpdate = new Date(); // Object Properties public List<WorldVector> vertices = new ArrayList<WorldVector>(); public List<WorldVector> connections = new ArrayList<WorldVector>(); public double mass = 0; public double momentOfInertia = 0; // Radial (radians) public WorldVector angularPosition = new WorldVector(); // deviation from the heading public WorldVector angularVelocity = new WorldVector(); public WorldVector angularAcceleration = new WorldVector(); public WorldVector angularForce = new WorldVector(); // this is torque / moment // Linear public WorldVector position = new WorldVector(); public WorldVector velocity = new WorldVector(); public WorldVector heading = new WorldVector(true); // Unit vector of the last known velocity public WorldVector acceleration = new WorldVector(); public WorldVector force = new WorldVector(); public WorldObjectState() { } public WorldObjectState(WorldVector initialPosition) { this.position = new WorldVector(initialPosition); } public WorldObjectState(WorldVector initialPosition, WorldVector initialHeading, List<WorldVector> vertices) { this.position = new WorldVector(initialPosition); this.heading = new WorldVector(initialHeading); this.vertices = vertices; } public WorldObjectState(WorldVector initialPosition, List<WorldVector> vertices) { this.position = new WorldVector(initialPosition); this.vertices = vertices; } public WorldObjectState(WorldVector initialPosition, List<WorldVector> vertices, List<WorldVector> connections) { this.position = new WorldVector(initialPosition); this.vertices = vertices; this.connections = connections; } public WorldObjectState(WorldObjectState objectState) { this.heading = objectState.heading; this.position = objectState.position; this.velocity = objectState.velocity; this.acceleration = objectState.acceleration; this.mass = objectState.mass; this.force = objectState.force; } public void update() { thisUpdate = new Date(); double t = (double)((thisUpdate.getTime() - lastUpdate.getTime())) / 1000; lastUpdate = thisUpdate; // x = vt + 1/2 * at^2 position = ((WorldVector) position).plus(((WorldVector) velocity).times(t).plus(((WorldVector) acceleration).times(t*t/2))); angularPosition = ((WorldVector) angularPosition).plus(((WorldVector) angularVelocity).times(t).plus(((WorldVector) angularAcceleration).times(t*t/2))); // v = at angularVelocity = ((WorldVector) angularVelocity).plus(((WorldVector) angularAcceleration).times(t)); velocity = ((WorldVector) velocity).plus(((WorldVector) acceleration).times(t)); if(velocity.magnitude() != 0) heading = new WorldVector(velocity, true); // a = f / m if(momentOfInertia != 0) angularAcceleration = ((WorldVector) angularForce).times(1/momentOfInertia); if(mass != 0) acceleration = ((WorldVector) force).times(1/mass); } public WorldVector get_position() { return position; } public List<WorldVector> getConnections() { return connections; } public void add_connection(WorldVector v) { connections.add(v); } public List<WorldVector> get_vertices() { return vertices; } public void set_velocity(WorldVector v) { this.velocity = new WorldVector(v.x, v.y, v.z); } public WorldVector get_velocity() { return this.velocity; } public void set_position(WorldVector v) { position = v; } public void set_angular_velocity(WorldVector v) { angularVelocity = v; } public String toString() { return "{position: " + position + ", velocity: " + velocity + ", acceleration: " + acceleration + "}"; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -