diff -r 0f44b7360c8d -r 925b7ee746e3 front_processing/extern/TUIO_JAVA/src/TUIO/TuioObject.java --- a/front_processing/extern/TUIO_JAVA/src/TUIO/TuioObject.java Thu Mar 22 18:15:53 2012 +0100 +++ b/front_processing/extern/TUIO_JAVA/src/TUIO/TuioObject.java Fri Mar 23 16:24:36 2012 +0100 @@ -1,251 +1,251 @@ -/* - TUIO Java backend - part of the reacTIVision project - http://reactivision.sourceforge.net/ - - Copyright (c) 2005-2009 Martin Kaltenbrunner - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -package TUIO; - -/** - * The TuioObject class encapsulates /tuio/2Dobj TUIO objects. - * - * @author Martin Kaltenbrunner - * @version 1.4 - */ -public class TuioObject extends TuioContainer { - - /** - * The individual symbol ID number that is assigned to each TuioObject. - */ - protected int symbol_id; - /** - * The rotation angle value. - */ - protected float angle; - /** - * The rotation speed value. - */ - protected float rotation_speed; - /** - * The rotation acceleration value. - */ - protected float rotation_accel; - /** - * Defines the ROTATING state. - */ - public static final int TUIO_ROTATING = 5; - - /** - * This constructor takes a TuioTime argument and assigns it along with the provided - * Session ID, Symbol ID, X and Y coordinate and angle to the newly created TuioObject. - * - * @param ttime the TuioTime to assign - * @param si the Session ID to assign - * @param sym the Symbol ID to assign - * @param xp the X coordinate to assign - * @param yp the Y coordinate to assign - * @param a the angle to assign - */ - public TuioObject (TuioTime ttime, long si, int sym, float xp, float yp, float a) { - super(ttime, si,xp,yp); - symbol_id = sym; - angle = a; - rotation_speed = 0.0f; - rotation_accel = 0.0f; - } - - /** - * This constructor takes the provided Session ID, Symbol ID, X and Y coordinate - * and angle, and assigs these values to the newly created TuioObject. - * - * @param si the Session ID to assign - * @param sym the Symbol ID to assign - * @param xp the X coordinate to assign - * @param yp the Y coordinate to assign - * @param a the angle to assign - */ - public TuioObject (long si, int sym, float xp, float yp, float a) { - super(si,xp,yp); - symbol_id = sym; - angle = angle; - rotation_speed = 0.0f; - rotation_accel = 0.0f; - } - - /** - * This constructor takes the atttibutes of the provided TuioObject - * and assigs these values to the newly created TuioObject. - * - * @param tobj the TuioObject to assign - */ - public TuioObject (TuioObject tobj) { - super(tobj); - symbol_id = tobj.getSymbolID(); - angle = tobj.getAngle(); - rotation_speed = 0.0f; - rotation_accel = 0.0f; - } - - /** - * Takes a TuioTime argument and assigns it along with the provided - * X and Y coordinate, angle, X and Y velocity, motion acceleration, - * rotation speed and rotation acceleration to the private TuioObject attributes. - * - * @param ttime the TuioTime to assign - * @param xp the X coordinate to assign - * @param yp the Y coordinate to assign - * @param a the angle coordinate to assign - * @param xs the X velocity to assign - * @param ys the Y velocity to assign - * @param rs the rotation velocity to assign - * @param ma the motion acceleration to assign - * @param ra the rotation acceleration to assign - */ - public void update (TuioTime ttime, float xp, float yp, float a, float xs, float ys, float rs, float ma, float ra) { - super.update(ttime,xp,yp,xs,ys,ma); - angle = a; - rotation_speed = rs; - rotation_accel = ra; - if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; - } - - /** - * Assigns the provided X and Y coordinate, angle, X and Y velocity, motion acceleration - * rotation velocity and rotation acceleration to the private TuioContainer attributes. - * The TuioTime time stamp remains unchanged. - * - * @param xp the X coordinate to assign - * @param yp the Y coordinate to assign - * @param a the angle coordinate to assign - * @param xs the X velocity to assign - * @param ys the Y velocity to assign - * @param rs the rotation velocity to assign - * @param ma the motion acceleration to assign - * @param ra the rotation acceleration to assign - */ - public void update (float xp, float yp, float a, float xs, float ys, float rs, float ma, float ra) { - super.update(xp,yp,xs,ys,ma); - angle = a; - rotation_speed = rs; - rotation_accel = ra; - if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; - } - - /** - * Takes a TuioTime argument and assigns it along with the provided - * X and Y coordinate and angle to the private TuioObject attributes. - * The speed and accleration values are calculated accordingly. - * - * @param ttime the TuioTime to assign - * @param xp the X coordinate to assign - * @param yp the Y coordinate to assign - * @param a the angle coordinate to assign - */ - public void update (TuioTime ttime, float xp, float yp, float a) { - TuioPoint lastPoint = path.lastElement(); - super.update(ttime,xp,yp); - - TuioTime diffTime = currentTime.subtract(lastPoint.getTuioTime()); - float dt = diffTime.getTotalMilliseconds()/1000.0f; - float last_angle = angle; - float last_rotation_speed = rotation_speed; - angle = a; - - float da = (this.angle-last_angle)/(2.0f*(float)Math.PI); - if (da>0.75f) da-=1.0f; - else if (da<-0.75f) da+=1.0f; - - rotation_speed = da/dt; - rotation_accel = (rotation_speed - last_rotation_speed)/dt; - if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; - } - - /** - * Takes the atttibutes of the provided TuioObject - * and assigs these values to this TuioObject. - * The TuioTime time stamp of this TuioContainer remains unchanged. - * - * @param tobj the TuioContainer to assign - */ - public void update (TuioObject tobj) { - super.update(tobj); - angle = tobj.getAngle(); - rotation_speed = tobj.getRotationSpeed(); - rotation_accel = tobj.getRotationAccel(); - if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; - } - - /** - * This method is used to calculate the speed and acceleration values of a - * TuioObject with unchanged position and angle. - * - * @param ttime the TuioTime to assign - */ - public void stop (TuioTime ttime) { - update(ttime,xpos,ypos, angle); - } - - /** - * Returns the symbol ID of this TuioObject. - * @return the symbol ID of this TuioObject - */ - public int getSymbolID() { - return symbol_id; - } - - /** - * Returns the rotation angle of this TuioObject. - * @return the rotation angle of this TuioObject - */ - public float getAngle() { - return angle; - } - - /** - * Returns the rotation angle in degrees of this TuioObject. - * @return the rotation angle in degrees of this TuioObject - */ - public float getAngleDegrees() { - return angle/(float)Math.PI*180.0f; - } - - /** - * Returns the rotation speed of this TuioObject. - * @return the rotation speed of this TuioObject - */ - public float getRotationSpeed() { - return rotation_speed; - } - - /** - * Returns the rotation acceleration of this TuioObject. - * @return the rotation acceleration of this TuioObject - */ - public float getRotationAccel() { - return rotation_accel; - } - - /** - * Returns true of this TuioObject is moving. - * @return true of this TuioObject is moving - */ - public boolean isMoving() { - if ((state==TUIO_ACCELERATING) || (state==TUIO_DECELERATING) || (state==TUIO_ROTATING)) return true; - else return false; - } - -} +/* + TUIO Java backend - part of the reacTIVision project + http://reactivision.sourceforge.net/ + + Copyright (c) 2005-2009 Martin Kaltenbrunner + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +package TUIO; + +/** + * The TuioObject class encapsulates /tuio/2Dobj TUIO objects. + * + * @author Martin Kaltenbrunner + * @version 1.4 + */ +public class TuioObject extends TuioContainer { + + /** + * The individual symbol ID number that is assigned to each TuioObject. + */ + protected int symbol_id; + /** + * The rotation angle value. + */ + protected float angle; + /** + * The rotation speed value. + */ + protected float rotation_speed; + /** + * The rotation acceleration value. + */ + protected float rotation_accel; + /** + * Defines the ROTATING state. + */ + public static final int TUIO_ROTATING = 5; + + /** + * This constructor takes a TuioTime argument and assigns it along with the provided + * Session ID, Symbol ID, X and Y coordinate and angle to the newly created TuioObject. + * + * @param ttime the TuioTime to assign + * @param si the Session ID to assign + * @param sym the Symbol ID to assign + * @param xp the X coordinate to assign + * @param yp the Y coordinate to assign + * @param a the angle to assign + */ + public TuioObject (TuioTime ttime, long si, int sym, float xp, float yp, float a) { + super(ttime, si,xp,yp); + symbol_id = sym; + angle = a; + rotation_speed = 0.0f; + rotation_accel = 0.0f; + } + + /** + * This constructor takes the provided Session ID, Symbol ID, X and Y coordinate + * and angle, and assigs these values to the newly created TuioObject. + * + * @param si the Session ID to assign + * @param sym the Symbol ID to assign + * @param xp the X coordinate to assign + * @param yp the Y coordinate to assign + * @param a the angle to assign + */ + public TuioObject (long si, int sym, float xp, float yp, float a) { + super(si,xp,yp); + symbol_id = sym; + angle = angle; + rotation_speed = 0.0f; + rotation_accel = 0.0f; + } + + /** + * This constructor takes the atttibutes of the provided TuioObject + * and assigs these values to the newly created TuioObject. + * + * @param tobj the TuioObject to assign + */ + public TuioObject (TuioObject tobj) { + super(tobj); + symbol_id = tobj.getSymbolID(); + angle = tobj.getAngle(); + rotation_speed = 0.0f; + rotation_accel = 0.0f; + } + + /** + * Takes a TuioTime argument and assigns it along with the provided + * X and Y coordinate, angle, X and Y velocity, motion acceleration, + * rotation speed and rotation acceleration to the private TuioObject attributes. + * + * @param ttime the TuioTime to assign + * @param xp the X coordinate to assign + * @param yp the Y coordinate to assign + * @param a the angle coordinate to assign + * @param xs the X velocity to assign + * @param ys the Y velocity to assign + * @param rs the rotation velocity to assign + * @param ma the motion acceleration to assign + * @param ra the rotation acceleration to assign + */ + public void update (TuioTime ttime, float xp, float yp, float a, float xs, float ys, float rs, float ma, float ra) { + super.update(ttime,xp,yp,xs,ys,ma); + angle = a; + rotation_speed = rs; + rotation_accel = ra; + if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; + } + + /** + * Assigns the provided X and Y coordinate, angle, X and Y velocity, motion acceleration + * rotation velocity and rotation acceleration to the private TuioContainer attributes. + * The TuioTime time stamp remains unchanged. + * + * @param xp the X coordinate to assign + * @param yp the Y coordinate to assign + * @param a the angle coordinate to assign + * @param xs the X velocity to assign + * @param ys the Y velocity to assign + * @param rs the rotation velocity to assign + * @param ma the motion acceleration to assign + * @param ra the rotation acceleration to assign + */ + public void update (float xp, float yp, float a, float xs, float ys, float rs, float ma, float ra) { + super.update(xp,yp,xs,ys,ma); + angle = a; + rotation_speed = rs; + rotation_accel = ra; + if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; + } + + /** + * Takes a TuioTime argument and assigns it along with the provided + * X and Y coordinate and angle to the private TuioObject attributes. + * The speed and accleration values are calculated accordingly. + * + * @param ttime the TuioTime to assign + * @param xp the X coordinate to assign + * @param yp the Y coordinate to assign + * @param a the angle coordinate to assign + */ + public void update (TuioTime ttime, float xp, float yp, float a) { + TuioPoint lastPoint = path.lastElement(); + super.update(ttime,xp,yp); + + TuioTime diffTime = currentTime.subtract(lastPoint.getTuioTime()); + float dt = diffTime.getTotalMilliseconds()/1000.0f; + float last_angle = angle; + float last_rotation_speed = rotation_speed; + angle = a; + + float da = (this.angle-last_angle)/(2.0f*(float)Math.PI); + if (da>0.75f) da-=1.0f; + else if (da<-0.75f) da+=1.0f; + + rotation_speed = da/dt; + rotation_accel = (rotation_speed - last_rotation_speed)/dt; + if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; + } + + /** + * Takes the atttibutes of the provided TuioObject + * and assigs these values to this TuioObject. + * The TuioTime time stamp of this TuioContainer remains unchanged. + * + * @param tobj the TuioContainer to assign + */ + public void update (TuioObject tobj) { + super.update(tobj); + angle = tobj.getAngle(); + rotation_speed = tobj.getRotationSpeed(); + rotation_accel = tobj.getRotationAccel(); + if ((rotation_accel!=0) && (state!=TUIO_STOPPED)) state = TUIO_ROTATING; + } + + /** + * This method is used to calculate the speed and acceleration values of a + * TuioObject with unchanged position and angle. + * + * @param ttime the TuioTime to assign + */ + public void stop (TuioTime ttime) { + update(ttime,xpos,ypos, angle); + } + + /** + * Returns the symbol ID of this TuioObject. + * @return the symbol ID of this TuioObject + */ + public int getSymbolID() { + return symbol_id; + } + + /** + * Returns the rotation angle of this TuioObject. + * @return the rotation angle of this TuioObject + */ + public float getAngle() { + return angle; + } + + /** + * Returns the rotation angle in degrees of this TuioObject. + * @return the rotation angle in degrees of this TuioObject + */ + public float getAngleDegrees() { + return angle/(float)Math.PI*180.0f; + } + + /** + * Returns the rotation speed of this TuioObject. + * @return the rotation speed of this TuioObject + */ + public float getRotationSpeed() { + return rotation_speed; + } + + /** + * Returns the rotation acceleration of this TuioObject. + * @return the rotation acceleration of this TuioObject + */ + public float getRotationAccel() { + return rotation_accel; + } + + /** + * Returns true of this TuioObject is moving. + * @return true of this TuioObject is moving + */ + public boolean isMoving() { + if ((state==TUIO_ACCELERATING) || (state==TUIO_DECELERATING) || (state==TUIO_ROTATING)) return true; + else return false; + } + +}