List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D getX
public double getX()
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; }