List of usage examples for org.apache.commons.math.geometry Vector3D getY
public double getY()
From source file:magma.agent.worldmodel.impl.VisibleObject.java
/** * @param other the point to which to calculate * @return the distance projection to the x y plane between this object and * the passed coordinate//from w ww . j a va 2 s . co m */ public double getDistanceToXY(Vector3D other) { Vector3D delta = getPosition().subtract(other); return new Vector3D(delta.getX(), delta.getY(), 0).getNorm(); }
From source file:magma.agent.worldmodel.impl.MovableObject.java
public void calculateSpeed(float lastSeenTime, float time) { // need previousPosition, hence speed is calculated after update if (getPreviousPosition() != null) { Vector3D checkSpeed = new Vector3D(); checkSpeed = getPosition().subtract(getPreviousPosition()); if (time - lastSeenTime > 1) checkSpeed = new Vector3D(checkSpeed.getX() / (time - lastSeenTime), checkSpeed.getY() / (time - lastSeenTime), checkSpeed.getZ() / (time - lastSeenTime)); // we don't set speed for impossible values if (checkSpeed.getNorm() < getPossibleSpeed()) speed = checkSpeed;//from ww w . j a v a2s . c om } else speed = new Vector3D(0.0, 0.0, 0.0); }
From source file:magma.agent.behavior.complex.MoveWithBall.java
@Override public void perform(float intensity) { if (currentBehavior == null || currentBehavior.isFinished()) { side = worldModel.getThisPlayer().getSide(); rightSide = side == IMagmaConstants.RIGHT_SIDE; leftSide = side == IMagmaConstants.LEFT_SIDE; ballPosition = worldModel.getBall().getPosition(); zAngle = 0.0;// ww w. j a v a 2 s. co m Vector3D newPosition = calculateNewXY(); if (rightSide)// invert values for playing from right side { newPosition = new Vector3D(-newPosition.getX(), -newPosition.getY(), 0); zAngle = 180.0; } if (!checkAngle(zAngle)) { // player is facing somewhere other than // opponent's goal turnPlayer(zAngle); } else if (thisPlayer.getPosition().getY() - newPosition.getY() < -0.3) { // move left currentBehavior = behaviors.get(STEP_LEFT); } else if (thisPlayer.getPosition().getY() - newPosition.getY() > 0.3) { // move right currentBehavior = behaviors.get(STEP_RIGHT); } else if (thisPlayer.getPosition().getX() - newPosition.getX() < -1.5) { // move forward currentBehavior = behaviors.get(STEP_FORWARD); } else if (thisPlayer.getPosition().getX() - newPosition.getX() > 1.5) { // move backward currentBehavior = behaviors.get(STEP_BACKWARD); } else currentBehavior = behaviors.get(NONE); currentBehavior.init(); } currentBehavior.perform(intensity); }
From source file:magma.agent.perception.impl.ServerMessageParserTest.java
@Test public void testGyroPerceptor() { String msg = "(GYR (n torso) (rt 0.01 0.07 0.46))"; try {/*from w ww .j a va 2 s.c o m*/ List<Perceptor> list = testee.parseString(msg); assertEquals(list.size(), 1); Perceptor perceptor = list.get(0); assertTrue(perceptor instanceof GyroPerceptor); GyroPerceptor gyro = (GyroPerceptor) perceptor; assertEquals(gyro.getName(), "torso"); Vector3D rotation = gyro.getGyro(); assertEquals(rotation.getX(), 0.01f, 0.0001); assertEquals(rotation.getY(), 0.07f, 0.0001); assertEquals(rotation.getZ(), 0.46f, 0.0001); } catch (Exception e) { fail("No exception expected"); } }
From source file:magma.agent.perception.impl.ServerMessageParserTest.java
@Test public void testForceResistancePerceptor() { String msg = "(FRP (n lf) (c -0.14 0.08 -0.05) (f 1.12 -0.26 13.07))"; try {/*from w ww .j av a2 s .co m*/ List<Perceptor> list = testee.parseString(msg); assertEquals(list.size(), 1); Perceptor perceptor = list.get(0); assertTrue(perceptor instanceof ForceResistancePerceptor); ForceResistancePerceptor frp = (ForceResistancePerceptor) perceptor; assertEquals(frp.getName(), "lf"); Vector3D origin = frp.getForceOrigin(); Vector3D force = frp.getForce(); assertEquals(origin.getX(), -0.14f, 0.0001); assertEquals(origin.getY(), 0.08f, 0.0001); assertEquals(origin.getZ(), -0.05f, 0.0001); assertEquals(force.getX(), 1.12f, 0.0001); assertEquals(force.getY(), -0.26f, 0.0001); assertEquals(force.getZ(), 13.07f, 0.0001); } catch (Exception e) { fail("No exception expected"); } }
From source file:magma.agent.behavior.complex.GoalieBehavior.java
@Override public void perform(float intensity) { if (currentBehavior == null || currentBehavior.isFinished()) { ballPosition = worldModel.getBall().getPosition(); goalie = worldModel.getThisPlayer(); leftSide = goalie.getSide() == IMagmaConstants.LEFT_SIDE; rightSide = goalie.getSide() == IMagmaConstants.RIGHT_SIDE; boolean none = false; float newY = calculateNewGoaliePos(ballPosition.getX(), ballPosition.getY()); if (newY == 0.7f || newY == -0.7f) none = true;//from w w w . j a v a 2 s .c o m zAngle = 0.0; if (rightSide)// inverting y values for right side. { newY = -newY; zAngle = 180.0; } Vector3D newPosition = new Vector3D(goalie.getPosition().getX(), newY, 0.0); // log logger.log(Level.FINE, "Goalie behavior. new position - x,y,z : ({0}, {1}, {2})", new Object[] { newPosition.getX(), newPosition.getY(), newPosition.getZ() }); // ball kick-able and isSafeToKick(when kicked will not be self goal) if (isSafeToKick()) { // kick with right or left foot currentBehavior = behaviors.get(IBehavior.SHOOT_TO_GOAL); } else if (!checkAngle(zAngle)) { // player is facing somewhere other // than // opponent's goal turnPlayer(zAngle); } else if (Geometry.isInsidePolygon(ballPosition, getBallToBeKickedRectangle())) { currentBehavior = behaviors.get(IBehavior.GET_IN_SCORE_POSITION); } else if (!none && goalie.getPosition().getY() - newPosition.getY() < -0.2) { // move left currentBehavior = behaviors.get(STEP_LEFT); } else if (!none && goalie.getPosition().getY() - newPosition.getY() > 0.2) { // move right currentBehavior = behaviors.get(STEP_RIGHT); } // else // currentBehavior = behaviors.get(NONE); // // // distance to newPosition is greater than distance to ball // // TODO also check if opponent is closer than you // else if (FuzzyCompare.gt((float) worldModel.getThisPlayer() // .getDistanceTo(newPosition), (float) worldModel.getThisPlayer() // .getDistanceTo(worldModel.getBall()), 0.3f)) { // // run to ball // // TODO change run_to_ball to something else // System.out // .println("----------------------------------------********----------run to ball"); // currentBehavior = behaviors.get(IBehavior.RUN_TO_BALL); // } // // distance to position smaller // else if (FuzzyCompare.lt((float) worldModel.getThisPlayer() // .getDistanceTo(newPosition), (float) worldModel.getThisPlayer() // .getDistanceTo(worldModel.getBall()), 0.3f)) { // // run to position // System.out // .println("----------------------------------------********----------run to p"); // /** ====> */ // System.out.println("my x=" + thisPlayer.getPosition().getX() // + " y=" + thisPlayer.getPosition().getY() + " z=" // + thisPlayer.getPosition().getZ()); // // System.out.println("x=" + newPosition.getX() + " y=" // + newPosition.getY() + " z=" + newPosition.getZ()); // // System.out.println("new ops=" // + worldModel.getThisPlayer().getDistanceTo(newPosition) // + " ball=" // + worldModel.getThisPlayer().getDistanceTo( // worldModel.getBall())); // currentBehavior = behaviors.get(IBehavior.RUN_TO_POSITION); // ((RunToPosition) currentBehavior).setPosition(newPosition, // calculateRot()); // // } else { currentBehavior = behaviors.get(IBehavior.NONE); } currentBehavior.init(); } currentBehavior.perform(intensity); }
From source file:magma.agent.agentmodel.impl.AgentModel.java
/** * updates all known GyroRates from perception * @param perception the result from server message parsing *///www .j a v a 2 s. c o m protected void updateGytoRate(IPerception perception) { Vector3D rate; for (int i = 0; i < IServerConfigFilesConstants.GYRORATE_NAMES.length; i++) { rate = perception.getGyroRatePerceptor(IServerConfigFilesConstants.GYRORATE_PERCEPTORS[i]).getGyro(); getGyroRate(IServerConfigFilesConstants.GYRORATE_NAMES[i]) .setGyro(new Vector3D(rate.getX(), rate.getY(), rate.getZ())); } }
From source file:magma.agent.worldmodel.impl.VisibleObject.java
public Vector3D getGlobalFromLocalPosition(Vector3D localPos, Vector3D playerPosition, Angle horizontalAngle, Angle verticalAngle, double neckPitchAngle, double neckYawAngle) { // Rotation around z axis with angle1 double angle1 = (float) -neckPitchAngle; double sinus = sin(angle1); double cosinus = cos(angle1); double newX = localPos.getX() * cosinus + localPos.getZ() * sinus; double newY = localPos.getY(); double newZ = localPos.getX() * (-sinus) + localPos.getZ() * cosinus; // Rotation around z axis with angle2 double angle2 = horizontalAngle.add(neckYawAngle).radians(); sinus = sin(angle2);//from ww w . j a v a 2s . com cosinus = cos(angle2); double newX2 = newX * cosinus - newY * sinus; double newY2 = newX * sinus + newY * cosinus; double newZ2 = newZ; // Rotation around x axis with angle b: // x' = x // y' = y * cos(b) - z * sin(b) // z' = y * sin(b) + z * cos(b) // translation return new Vector3D(newX2, newY2, newZ2).add(playerPosition); }
From source file:magma.agent.behavior.complex.GetInScorePosition.java
double[] getPosition() { Vector3D ballPosition = worldModel.getBall().getPosition(); IThisPlayer thisPlayer = worldModel.getThisPlayer(); Vector3D shootVector = worldModel.getOtherGoalPosition().subtract(ballPosition); Vector3D scorePosition = ballPosition.add(-0.25, shootVector.normalize()); if (thisPlayer.getDistanceTo(ballPosition) < thisPlayer.getDistanceTo(scorePosition)) { Angle delta1 = thisPlayer.getDirectionTo(ballPosition) .subtract(thisPlayer.getDirectionTo(scorePosition)); double delta = Math.abs(delta1.degrees()); if (delta < 90) { // We have to run around the ball scorePosition = calculateAlternativePosition(ballPosition, thisPlayer, scorePosition); } else if (delta < 140) { scorePosition = ballPosition.add(-BALL_KEEP_AWAY_DISTANCE, shootVector.normalize()); }//from w ww. j a va2 s.c o m } return new double[] { scorePosition.getX(), scorePosition.getY(), shootVector.getAlpha() }; }
From source file:magma.agent.agentmodel.impl.AgentModel.java
/** * updates all known ForceResistances from perception * @param perception the result from server message parsing *//*from w w w .j av a 2 s . c om*/ protected void updateForceResistance(IPerception perception) { Vector3D force; Vector3D forceOrigin; for (int i = 0; i < IServerConfigFilesConstants.FORCERESISTANCE_NAMES.length; i++) { // Fetch new Force Values force = perception .getForceResistancePerceptor(IServerConfigFilesConstants.FORCERESISTANCE_PERCEPTORS[i]) .getForce(); forceOrigin = perception .getForceResistancePerceptor(IServerConfigFilesConstants.FORCERESISTANCE_PERCEPTORS[i]) .getForceOrigin(); // Set new Force Values getForceResistance(IServerConfigFilesConstants.FORCERESISTANCE_NAMES[i]) .setForce(new Vector3D(force.getX(), force.getY(), force.getZ())); getForceResistance(IServerConfigFilesConstants.FORCERESISTANCE_NAMES[i]) .setForceOrigin(new Vector3D(forceOrigin.getX(), forceOrigin.getY(), forceOrigin.getZ())); } }