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

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

Introduction

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

Prototype

public double getX() 

Source Link

Document

Get the abscissa of the vector.

Usage

From source file:org.jtrfp.trcl.beh.ProjectileBehavior.java

@Override
public void _tick(long tickTimeMillis) {
    if (honingTarget != null) {
        if (honingTarget.get() == null)
            return;
        if (honingAdjustmentUpdate++ % 5 == 0) {
            if (!honingTarget.get().isVisible())
                return;// Dead or otherwise.
            final Vector3D honingVector = new Vector3D(honingTarget.get().getPositionWithOffset())
                    .subtract(new Vector3D(getParent().getPosition())).normalize();
            //Sanity check
            if (Double.isNaN(honingVector.getX()))
                return;
            if (Double.isNaN(honingVector.getY()))
                return;
            if (Double.isNaN(honingVector.getZ()))
                return;
            getParent().getBehavior().probeForBehavior(AutoLeveling.class).setLevelingVector(honingVector);
            movesByVelocity.setVelocity(getParent().getHeading().scalarMultiply(speed));
        } // end if(updateHoningVector)
    } // end if(honingTarget)
}

From source file:org.jtrfp.trcl.beh.RollLevelingBehavior.java

@Override
public void _tick(long tickTimeMillis) {
    WorldObject p = getParent();/*w  w w.  jav  a2s. com*/
    final double[] initHdng = p.getHeadingArray();
    final double[] initTop = p.getTopArray();
    //Escape on invalid cases
    if (initHdng[1] <= -1)
        return;
    if (initHdng[1] >= 1)
        return;
    if (initTop[1] == 0)
        return;
    //Create an imaginary heading/top where heading.y=0
    imgHdng[0] = initHdng[0];
    imgHdng[1] = 0;
    imgHdng[2] = initHdng[2];

    Vect3D.normalize(imgHdng, imgHdng);

    //Create a rotation to convert back later after performing the roll adjustment.
    Rotation rot = new Rotation(new Vector3D(initHdng), new Vector3D(imgHdng));
    Vector3D imgTop = rot.applyTo(new Vector3D(initTop)).normalize();
    double topY = imgTop.getY();

    if (topY == 0)
        return;

    //Retainment softener prevents gimbal swing effect when facing up or down.
    final double retainmentSoftener = Misc.clamp(Math.abs(initHdng[1]), 0, 1);
    final double softenedRetainment = retainment * (1. - retainmentSoftener) + retainmentSoftener;
    //Perform the roll adjustment using weighting supplied by softenedRetainer
    if (topY > 0) {//Rightside up, approach 1.
        topY = topY * softenedRetainment + 1 * (1. - softenedRetainment);
    } else {//Upside down, approach -1
        topY = topY * softenedRetainment + -1 * (1. - softenedRetainment);
    }
    Vector3D newTop = rot.applyInverseTo(new Vector3D(imgTop.getX(), topY, imgTop.getZ()).normalize());
    //Apply. This will automatically notify change. No need to change heading as it is intrinsically the same.
    p.setTop(newTop);
}

From source file:org.jtrfp.trcl.Camera.java

/**
 * @param lookAtVector the lookAtVector to set
 *//*  w w  w  .j av a  2s  .  co  m*/
public synchronized void setLookAtVector(Vector3D lookAtVector) {
    double[] heading = super.getHeadingArray();
    heading[0] = lookAtVector.getX();
    heading[1] = lookAtVector.getY();
    heading[2] = lookAtVector.getZ();
    //cameraMatrix=null;
}

From source file:org.jtrfp.trcl.Camera.java

/**
 * @param cameraPosition//from www .j  a  v a2 s  .co m
 *            the cameraPosition to set
 */
public void setPosition(Vector3D cameraPosition) {
    this.setPosition(cameraPosition.getX(), cameraPosition.getY(), cameraPosition.getZ());
}

From source file:org.jtrfp.trcl.Camera.java

private RealMatrix applyMatrix() {
    try {//from ww  w  . ja  va 2 s  .  c o m
        Vector3D eyeLoc = getCameraPosition();
        Vector3D aZ = getLookAtVector().negate();
        Vector3D aX = getUpVector().crossProduct(aZ).normalize();
        Vector3D aY = getUpVector();

        rotationMatrix = new Array2DRowRealMatrix(
                new double[][] { new double[] { aX.getX(), aX.getY(), aX.getZ(), 0 },
                        new double[] { aY.getX(), aY.getY(), aY.getZ(), 0 },
                        new double[] { aZ.getX(), aZ.getY(), aZ.getZ(), 0 }, new double[] { 0, 0, 0, 1 } });

        RealMatrix tM = new Array2DRowRealMatrix(new double[][] { new double[] { 1, 0, 0, -eyeLoc.getX() },
                new double[] { 0, 1, 0, -eyeLoc.getY() }, new double[] { 0, 0, 1, -eyeLoc.getZ() },
                new double[] { 0, 0, 0, 1 } });

        return completeMatrix = getProjectionMatrix().multiply(rotationMatrix.multiply(tM));
    } catch (MathArithmeticException e) {
    } //Don't crash.
    return completeMatrix;
}

From source file:org.jtrfp.trcl.core.Renderer.java

public void setSunVector(Vector3D sv) {
    factory.getDeferredProgram().use();// w w  w .j  a  va  2 s .  c  o  m
    factory.getSunVectorUniform().set((float) sv.getX(), (float) sv.getY(), (float) sv.getZ());
    gpu.defaultProgram();
}

From source file:org.jtrfp.trcl.core.TR.java

public static Vector3D twosComplimentSubtract(Vector3D l, Vector3D r) {
    return new Vector3D(deltaRollover(l.getX() - r.getX()), deltaRollover(l.getY() - r.getY()),
            deltaRollover(l.getZ() - r.getZ()));
}

From source file:org.jtrfp.trcl.DEFObjectPlacer.java

@Override
public void placeObjects(RenderableSpacePartitioningGrid target, Vector3D positionOffset) {
    final List<EnemyDefinition> defs = def.getEnemyDefinitions();
    final List<EnemyPlacement> places = def.getEnemyPlacements();
    final Model[] models = new Model[defs.size()];
    //final TR tr = world.getTr();
    final LoadingProgressReporter[] defReporters = rootReporter.generateSubReporters(defs.size());
    final LoadingProgressReporter[] placementReporters = rootReporter.generateSubReporters(places.size());
    for (int i = 0; i < defs.size(); i++) {
        defReporters[i].complete();//from www  . ja v a2s. co  m
        final int index = i;//???
        final EnemyDefinition def = defs.get(index);
        try {
            models[index] = tr.getResourceManager().getBINModel(def.getComplexModelFile(),
                    tr.getGlobalPaletteVL(), null, tr.gpu.get().getGl());
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (models[index] == null)
            System.out.println(
                    "Failed to get a model from BIN " + def.getComplexModelFile() + " at index " + index);
        final Reporter reporter = tr.getReporter();
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".complexModelFile", defs.get(i).getComplexModelFile());
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".logic", defs.get(i).getLogic());
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".simpleModelFile", defs.get(i).getSimpleModel());
    } //end for(i:defs)
    int placementReporterIndex = 0;
    for (EnemyPlacement pl : places) {
        placementReporters[placementReporterIndex++].complete();
        Model model = models[pl.getDefIndex()];
        if (model != null) {
            final EnemyDefinition def = defs.get(pl.getDefIndex());
            final DEFObject obj = new DEFObject(tr, model, def, pl);
            if (defList != null)
                defList.add(obj);
            if (def.isShowOnBriefing() && !enemyPlacementMap.containsKey(def)) {
                enemyPlacementMap.put(def, obj);
            } //end 
            //USING  z,x coords
            final double[] objPos = obj.getPosition();
            objPos[0] = TR.legacy2Modern(pl.getLocationOnMap().getZ()) + positionOffset.getX();
            objPos[1] = (TR.legacy2Modern(pl.getLocationOnMap().getY()) / TR.mapWidth) * 16.
                    * tr.getWorld().sizeY + positionOffset.getY();
            objPos[2] = TR.legacy2Modern(pl.getLocationOnMap().getX()) + positionOffset.getZ();
            obj.notifyPositionChange();

            if (def.getLogic() == EnemyLogic.groundStaticRuin) {
                //Spawn a second, powerup-free model using the simplemodel
                Model simpleModel = null;
                try {
                    simpleModel = tr.getResourceManager().getBINModel(def.getSimpleModel(),
                            tr.getGlobalPaletteVL(), null, tr.gpu.get().getGl());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                EnemyDefinition ed = new EnemyDefinition();
                ed.setLogic(EnemyLogic.groundDumb);
                ed.setDescription("auto-generated enemy rubble def");
                ed.setPowerupProbability(0);
                EnemyPlacement simplePlacement = pl.clone();
                final DEFObject ruin = new DEFObject(tr, simpleModel, ed, simplePlacement);
                ruin.setVisible(false);
                ruin.setIsRuin(true);
                obj.setRuinObject(ruin);
                ruin.setPosition(obj.getPosition());
                try {
                    ruin.setDirection(new ObjectDirection(pl.getRoll(), pl.getPitch(), pl.getYaw() + 65536));
                } catch (MathArithmeticException e) {
                    e.printStackTrace();
                }
                target.add(ruin);
            } //end if(groundStaticRuin)
            if (pl.getRoll() != 0 || pl.getPitch() != 0 || pl.getYaw() != 0)//Only set if not 0,0,0
                try {
                    obj.setDirection(new ObjectDirection(pl.getRoll(), pl.getPitch(), pl.getYaw() + 65536));
                } catch (MathArithmeticException e) {
                    e.printStackTrace();
                }
            if (headingOverride != null) {
                final double[] headingArray = obj.getHeadingArray();
                headingArray[0] = headingOverride.getX();
                headingArray[1] = headingOverride.getY();
                headingArray[2] = headingOverride.getZ();
            } //end if(headingOverride)
            target.add(obj);
        } //end if(model!=null)
        else {
            System.out.println("Skipping triangle list at index " + pl.getDefIndex());
        }
    } //end for(places)
    for (EnemyDefinition ed : enemyPlacementMap.keySet()) {
        enemyIntros.add(new EnemyIntro(enemyPlacementMap.get(ed), ed.getDescription()));
    }
}

From source file:org.jtrfp.trcl.flow.Mission.java

public void setSatelliteView(boolean satelliteView) {
    if (!(getMissionMode() instanceof AboveGroundMode) && satelliteView)
        throw new IllegalArgumentException("Cannot activate satellite view while mission mode is "
                + getMissionMode().getClass().getSimpleName());
    if (satelliteView && tr.getGame().isPaused())
        throw new IllegalArgumentException("Cannot activate satellite view while paused.");
    pcs.firePropertyChange(SATELLITE_VIEW, this.satelliteView, satelliteView);
    if (satelliteView != this.satelliteView) {
        final Game game = tr.getGame();
        final Camera cam = tr.mainRenderer.get().getCamera();
        if (satelliteView) {//Switched on
            tr.getThreadManager().setPaused(true);
            game.getNavSystem().deactivate();
            game.getHUDSystem().deactivate();
            cam.setFogEnabled(false);/*  www .  j  av a  2 s .co  m*/
            cam.probeForBehavior(MatchPosition.class).setEnable(false);
            cam.probeForBehavior(MatchDirection.class).setEnable(false);
            final Vector3D pPos = new Vector3D(game.getPlayer().getPosition());
            final Vector3D pHeading = tr.getGame().getPlayer().getHeading();
            cam.setPosition(new Vector3D(pPos.getX(), TR.mapSquareSize * 25, pPos.getZ()));
            cam.setHeading(Vector3D.MINUS_J);
            cam.setTop(new Vector3D(pHeading.getX(), .0000000001, pHeading.getZ()).normalize());
            tr.getGame().getSatDashboard().setVisible(true);
        } else {//Switched off
            tr.getThreadManager().setPaused(false);
            tr.getGame().getNavSystem().activate();
            game.getHUDSystem().activate();
            cam.setFogEnabled(true);
            cam.probeForBehavior(MatchPosition.class).setEnable(true);
            cam.probeForBehavior(MatchDirection.class).setEnable(true);
            tr.getGame().getSatDashboard().setVisible(false);
        } //end !satelliteView
    } //end if(change)
    this.satelliteView = satelliteView;
}

From source file:org.jtrfp.trcl.LineSegment.java

public static Triangle[] buildTriPipe(Vector3D start, Vector3D end, TextureDescription texture, int thickness,
        Triangle[] dest, int destOffset) {
    Rotation rot = new Rotation(Vector3D.PLUS_K, end.subtract(start).normalize());
    final double len = start.distance(end);
    // Start//from w  w  w.j ava2s  .c o  m
    Vector3D sbl = new Vector3D(-thickness, -thickness, 0);// bottom left
    Vector3D sbr = new Vector3D(thickness, -thickness, 0);// bottom right
    Vector3D stp = new Vector3D(0, thickness, 0);
    // End
    Vector3D ebl = new Vector3D(-thickness, -thickness, len);
    Vector3D ebr = new Vector3D(thickness, -thickness, len);
    Vector3D etp = new Vector3D(0, thickness, len);

    Vector3D cl = new Vector3D(-1, 1, 0).normalize();
    Vector3D cr = new Vector3D(1, 1, 0).normalize();
    Vector3D cb = new Vector3D(0, -1, 0);

    cl = rot.applyTo(cl);
    cr = rot.applyTo(cr);
    cb = rot.applyTo(cb);

    sbl = rot.applyTo(sbl).add(start);
    sbr = rot.applyTo(sbr).add(start);
    stp = rot.applyTo(stp).add(start);

    ebl = rot.applyTo(ebl).add(start);
    ebr = rot.applyTo(ebr).add(start);
    etp = rot.applyTo(etp).add(start);

    final double u[] = { 0, 1, 1, 0 };
    final double v[] = { 1, 1, 0, 0 };
    // TOP LEFT
    Triangle.quad2Triangles(new double[] { sbl.getX(), stp.getX(), etp.getX(), ebl.getX() },
            new double[] { sbl.getY(), stp.getY(), etp.getY(), ebl.getY() },
            new double[] { sbl.getZ(), stp.getZ(), etp.getZ(), ebl.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cl, dest, destOffset, "LineSegment.topLeft");
    // TOP RIGHT
    Triangle.quad2Triangles(new double[] { sbr.getX(), stp.getX(), etp.getX(), ebr.getX() },
            new double[] { sbr.getY(), stp.getY(), etp.getY(), ebr.getY() },
            new double[] { sbr.getZ(), stp.getZ(), etp.getZ(), ebr.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cr, dest, destOffset + 2, "LineSegment.topRight");
    // BOTTOM
    Triangle.quad2Triangles(new double[] { sbl.getX(), sbr.getX(), ebr.getX(), ebl.getX() },
            new double[] { sbl.getY(), sbr.getY(), ebr.getY(), ebl.getY() },
            new double[] { sbr.getZ(), sbr.getZ(), ebr.getZ(), ebl.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cb, dest, destOffset + 4, "LineSegment.bottom");
    return dest;
}