List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D Vector3D
public Vector3D(double[] v) throws DimensionMismatchException
From source file:fr.cs.examples.propagation.DSSTPropagation.java
/** Create an orbit from input parameters * @param parser input file parser/*from w w w .ja v a2 s . c om*/ * @param frame inertial frame * @param scale time scale * @param mu central attraction coefficient * @throws NoSuchElementException if input parameters are mising * @throws IOException if input parameters are invalid */ private Orbit createOrbit(final KeyValueFileParser<ParameterKey> parser, final Frame frame, final TimeScale scale, final double mu) throws NoSuchElementException, IOException { // Orbit definition Orbit orbit; PositionAngle angleType = PositionAngle.MEAN; if (parser.containsKey(ParameterKey.ORBIT_ANGLE_TYPE)) { angleType = PositionAngle.valueOf(parser.getString(ParameterKey.ORBIT_ANGLE_TYPE).toUpperCase()); } if (parser.containsKey(ParameterKey.ORBIT_KEPLERIAN_A)) { orbit = new KeplerianOrbit(parser.getDouble(ParameterKey.ORBIT_KEPLERIAN_A) * 1000., parser.getDouble(ParameterKey.ORBIT_KEPLERIAN_E), parser.getAngle(ParameterKey.ORBIT_KEPLERIAN_I), parser.getAngle(ParameterKey.ORBIT_KEPLERIAN_PA), parser.getAngle(ParameterKey.ORBIT_KEPLERIAN_RAAN), parser.getAngle(ParameterKey.ORBIT_KEPLERIAN_ANOMALY), angleType, frame, parser.getDate(ParameterKey.ORBIT_DATE, scale), mu); } else if (parser.containsKey(ParameterKey.ORBIT_EQUINOCTIAL_A)) { orbit = new EquinoctialOrbit(parser.getDouble(ParameterKey.ORBIT_EQUINOCTIAL_A) * 1000., parser.getDouble(ParameterKey.ORBIT_EQUINOCTIAL_EX), parser.getDouble(ParameterKey.ORBIT_EQUINOCTIAL_EY), parser.getDouble(ParameterKey.ORBIT_EQUINOCTIAL_HX), parser.getDouble(ParameterKey.ORBIT_EQUINOCTIAL_HY), parser.getAngle(ParameterKey.ORBIT_EQUINOCTIAL_LAMBDA), angleType, frame, parser.getDate(ParameterKey.ORBIT_DATE, scale), mu); } else if (parser.containsKey(ParameterKey.ORBIT_CIRCULAR_A)) { orbit = new CircularOrbit(parser.getDouble(ParameterKey.ORBIT_CIRCULAR_A) * 1000., parser.getDouble(ParameterKey.ORBIT_CIRCULAR_EX), parser.getDouble(ParameterKey.ORBIT_CIRCULAR_EY), parser.getAngle(ParameterKey.ORBIT_CIRCULAR_I), parser.getAngle(ParameterKey.ORBIT_CIRCULAR_RAAN), parser.getAngle(ParameterKey.ORBIT_CIRCULAR_ALPHA), angleType, frame, parser.getDate(ParameterKey.ORBIT_DATE, scale), mu); } else if (parser.containsKey(ParameterKey.ORBIT_CARTESIAN_PX)) { final double[] pos = { parser.getDouble(ParameterKey.ORBIT_CARTESIAN_PX) * 1000., parser.getDouble(ParameterKey.ORBIT_CARTESIAN_PY) * 1000., parser.getDouble(ParameterKey.ORBIT_CARTESIAN_PZ) * 1000. }; final double[] vel = { parser.getDouble(ParameterKey.ORBIT_CARTESIAN_VX) * 1000., parser.getDouble(ParameterKey.ORBIT_CARTESIAN_VY) * 1000., parser.getDouble(ParameterKey.ORBIT_CARTESIAN_VZ) * 1000. }; orbit = new CartesianOrbit(new PVCoordinates(new Vector3D(pos), new Vector3D(vel)), frame, parser.getDate(ParameterKey.ORBIT_DATE, scale), mu); } else { throw new IOException("Orbit definition is incomplete."); } return orbit; }
From source file:org.aminb.mathtools.app.math.Line3D.java
private void doInit(double[] pointA, double[] dirxnVector) { ptA = new Vector3D(pointA); double[] pointB = calcPtB(pointA, dirxnVector); ptB = new Vector3D(pointB); line = new Line(ptA, ptB, .0000001); }
From source file:org.aminb.mathtools.app.math.Line3D.java
private void paramToPt() { double[] pta = new double[3]; double[] ptb = new double[3]; pta[0] = Xparam[0] + Xparam[1]; // calculate an x value for point A pta[1] = Yparam[0] + Yparam[1]; // calculate an y value for point A pta[2] = Zparam[0] + Zparam[1]; // calculate an z value for point A ptb[0] = Xparam[0] * 3 + Xparam[1]; //x=3t+a // calculate an x value for point B ptb[1] = Yparam[0] * 3 + Yparam[1]; // calculate an y value for point B ptb[2] = Zparam[0] * 3 + Zparam[1]; // calculate an z value for point B ptA = new Vector3D(pta); ptB = new Vector3D(ptb); line = new Line(ptA, ptB, .0000001); }
From source file:org.forYoink.math.CommonsVector3D.java
public CommonsVector3D(double[] d) { this.internalVector = new Vector3D(d); }
From source file:org.jtrfp.trcl.beh.AutoFiring.java
@Override public void _tick(long timeMillis) { final WorldObject thisObject = getParent(); final Player player = thisObject.getTr().getGame().getPlayer(); if (player.getBehavior().probeForBehavior(Cloakable.class).isCloaked()) return;/* www . j a v a 2s .co m*/ final double[] thisPos = thisObject.getPosition(); final double[] playerPos = player.getPosition(); final double dist = Vect3D.distance(thisPos, playerPos); if (dist < maxFiringDistance || dist > minFiringDistance) { final int patIndex = (int) (((timeMillis + patternOffsetMillis) % totalFiringPatternTimeMillis) / timePerPatternEntry); if (patIndex != lastIndexVisited) {//end if(lastVisited) if (firingPattern[patIndex]) { Vector3D result; if (smartFiring) { final Vector3D playerVelocity = player.getBehavior().probeForBehavior(Velocible.class) .getVelocity(); final double projectileSpeed = projectileFiringBehavior.getProjectileFactory().getWeapon() .getSpeed() / TR.crossPlatformScalar; Vector3D virtualPlayerPos = interceptOf(new Vector3D(playerPos), playerVelocity, new Vector3D(thisPos), projectileSpeed); if (virtualPlayerPos == null) virtualPlayerPos = new Vector3D(playerPos); Vect3D.subtract(virtualPlayerPos.toArray(), thisPos, firingVector); } else { Vect3D.subtract(playerPos, thisPos, firingVector); } result = new Vector3D(Vect3D.normalize(firingVector, firingVector)); final double[] objectHeading = thisObject.getHeadingArray(); Vect3D.subtract(objectHeading, result.toArray(), headingDelta); if (Vect3D.norm(headingDelta) > maxFireVectorDeviation) return; if (berzerk) result = new Vector3D(Math.random(), Math.random(), Math.random()).normalize(); Vector3D rand = new Vector3D((Math.random() * 2. - 1.) * aimRandomness, (Math.random() * 2. - 1.) * aimRandomness, (Math.random() * 2. - 1.) * aimRandomness); result = result.add(rand).normalize(); projectileFiringBehavior.requestFire(result); } } lastIndexVisited = patIndex; } //end in range }
From source file:org.jtrfp.trcl.beh.CubeCollisionBehavior.java
@Override public void proposeCollision(WorldObject obj) { if (obj instanceof Player) { final WorldObject p = getParent(); final double[] relPos = TR.twosComplimentSubtract(obj.getPosition(), p.getPosition(), new double[3]); final Rotation rot = new Rotation(Vector3D.PLUS_K, Vector3D.PLUS_J, p.getHeading(), p.getTop()); final double[] rotPos = rot.applyInverseTo(new Vector3D(relPos)).toArray(); final double[] rotTransPos = Vect3D.add(rotPos, origin, rotTransPosVar); if (TR.twosComplimentDistance(obj.getPosition(), p.getPosition()) < 80000) if (rotTransPos[0] > 0 && rotTransPos[0] < dims[0] && rotTransPos[1] > 0 && rotTransPos[1] < dims[1] && rotTransPos[2] > 0 && rotTransPos[2] < dims[2]) { obj.probeForBehaviors(new AbstractSubmitter<DamageableBehavior>() { @Override// w w w. java 2 s. co m public void submit(DamageableBehavior item) { item.proposeDamage(new GroundCollisionDamage(damageOnImpact)); } }, DamageableBehavior.class); } //end if(withinRange) } //end if(Player) }
From source file:org.jtrfp.trcl.beh.DamagedByCollisionWithGameplayObject.java
@Override public void proposeCollision(WorldObject other) { final WorldObject p = getParent(); final double distance = Vect3D.distance(other.getPosition(), p.getPosition()); if (distance < CollisionManager.SHIP_COLLISION_DISTANCE) { if (other instanceof Player && getParent() instanceof DEFObject) { p.getBehavior().probeForBehaviors(new AbstractSubmitter<DamageableBehavior>() { @Override/*from w ww .j ava 2 s . com*/ public void submit(DamageableBehavior item) { item.proposeDamage(new DamageListener.ProjectileDamage(65535 / 30)); } }, DamageableBehavior.class); other.getBehavior().probeForBehaviors(new AbstractSubmitter<DamageableBehavior>() { @Override public void submit(DamageableBehavior item) { item.proposeDamage(new DamageListener.ProjectileDamage(65535 / 10)); } }, DamageableBehavior.class); p.getTr().getResourceManager().getDebrisSystem().spawn(new Vector3D(p.getPosition()), new Vector3D(0, 1000, 0)); } //end if(Player & this is DEFObject) } // end if(nearby) }
From source file:org.jtrfp.trcl.beh.DamagedByCollisionWithSurface.java
@Override public void collidedWithSurface(WorldObject wo, double[] surfaceNormal) { if (!isEnabled()) return;/* www . j a v a 2 s.c o m*/ final WorldObject p = getParent(); p.probeForBehaviors(new AbstractSubmitter<DamageableBehavior>() { @Override public void submit(DamageableBehavior item) { item.proposeDamage(new DamageListener.ShearDamage(collisionDamage)); } }, DamageableBehavior.class); for (int i = 0; i < MIN_FRAGS + p.getModel().getTriangleList().getMaximumVertexValue() / 6000; i++) { p.getTr().getResourceManager().getDebrisSystem().spawn(new Vector3D(p.getPosition()), new Vector3D(Math.random() * MAX_SPEED - MAX_SPEED / 2., Math.random() * MAX_SPEED + 30000, Math.random() * MAX_SPEED - MAX_SPEED / 2.)); } }
From source file:org.jtrfp.trcl.beh.DeathBehavior.java
public synchronized void die() { if (dead)/* w w w .j a v a 2 s .co m*/ return; dead = true;//Only die once until reset WorldObject wo = getParent(); locationOfDeath = new Vector3D(wo.getPositionWithOffset()); spgOfLastDeath = new WeakReference<SpacePartitioningGrid<PositionedRenderable>>(wo.getContainingGrid()); wo.destroy(); wo.getBehavior().probeForBehaviors(sub, DeathListener.class); }
From source file:org.jtrfp.trcl.beh.FacingObject.java
@Override public void _tick(long tickTimeMillis) { if (target != null) { final WorldObject parent = getParent(); final double[] tPos = target.getPosition(); final double[] pPos = parent.getPosition(); Vect3D.subtract(tPos, pPos, work); parent.setHeading(new Vector3D(Vect3D.normalize(work, work))); Vect3D.cross(work, UP, perp);//from www. ja va 2 s . c o m Vect3D.cross(perp, work, perp); parent.setTop(Vector3D.PLUS_J); } //end if(!null) }