Example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D Vector3D

List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D Vector3D

Introduction

In this page you can find the example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D Vector3D.

Prototype

public Vector3D(double[] v) throws DimensionMismatchException 

Source Link

Document

Simple constructor.

Usage

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)
}