List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO
Vector3D ZERO
To view the source code for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO.
Click Source Link
From source file:org.jtrfp.trcl.gpu.Model.java
public static Model buildCube(double w, double h, double d, TextureDescription tunnelTexturePalette, double[] origin, double u0, double v0, double u1, double v1, boolean hasAlpha, boolean hasNorm, TR tr) { Model m = new Model(false, tr); // Front//from ww w .ja v a 2 s . c o m m.addTriangles(Triangle.quad2Triangles( new double[] { 0 - origin[0], w - origin[0], w - origin[0], 0 - origin[0] }, new double[] { h - origin[1], h - origin[1], 0 - origin[1], 0 - origin[1] }, new double[] { 0 - origin[2], 0 - origin[2], 0 - origin[2], 0 - origin[2] }, new double[] { u0, u1, u1, u0 }, new double[] { v1, v1, v0, v0 }, tunnelTexturePalette, RenderMode.STATIC, hasAlpha, hasNorm ? Vector3D.MINUS_K : Vector3D.ZERO, "Model.buildCube.front")); // Left m.addTriangles(Triangle.quad2Triangles( new double[] { 0 - origin[0], 0 - origin[0], 0 - origin[0], 0 - origin[0] }, new double[] { h - origin[1], h - origin[1], 0 - origin[1], 0 - origin[1] }, new double[] { 0 - origin[2], d - origin[2], d - origin[2], 0 - origin[2] }, new double[] { u0, u1, u1, u0 }, new double[] { v1, v1, v0, v0 }, tunnelTexturePalette, RenderMode.STATIC, hasAlpha, hasNorm ? Vector3D.MINUS_I : Vector3D.ZERO, "Model.buildCube.left")); // Right m.addTriangles(Triangle.quad2Triangles( new double[] { w - origin[0], w - origin[0], w - origin[0], w - origin[0] }, new double[] { h - origin[1], h - origin[1], 0 - origin[1], 0 - origin[1] }, new double[] { 0 - origin[2], d - origin[2], d - origin[2], 0 - origin[2] }, new double[] { u0, u1, u1, u0 }, new double[] { v1, v1, v0, v0 }, tunnelTexturePalette, RenderMode.STATIC, hasAlpha, hasNorm ? Vector3D.PLUS_I : Vector3D.ZERO, "Model.buildCube.right")); // Back m.addTriangles(Triangle.quad2Triangles( new double[] { 0 - origin[0], w - origin[0], w - origin[0], 0 - origin[0] }, new double[] { 0 - origin[1], 0 - origin[1], h - origin[1], h - origin[1] }, new double[] { d - origin[2], d - origin[2], d - origin[2], d - origin[2] }, new double[] { u0, u1, u1, u0 }, new double[] { v0, v0, v1, v1 }, tunnelTexturePalette, RenderMode.STATIC, hasAlpha, hasNorm ? Vector3D.PLUS_K : Vector3D.ZERO, "Model.buildCube.back")); return m; }
From source file:org.jtrfp.trcl.gpu.Vertex.java
public Vector3D getNormal() { if (normal != null) return normal; Vector3D result = Vector3D.ZERO; for (Triangle triangle : triangles) { result = result.add(triangle.getCentroidNormal()); } //end for(triangles) return result.scalarMultiply(1. / (double) triangles.size()); }
From source file:org.jtrfp.trcl.obj.BillboardSprite.java
public void setTexture(TextureDescription desc, boolean useAlpha) { if (dim == null) throw new NullPointerException("Billboard size must be non-null. (did you forget to set it?)"); Triangle[] tris = Triangle.quad2Triangles( new double[] { -.5 * dim.getWidth(), .5 * dim.getWidth(), .5 * dim.getWidth(), -.5 * dim.getWidth() }, //X new double[] { -.5 * dim.getHeight(), -.5 * dim.getHeight(), .5 * dim.getHeight(), .5 * dim.getHeight() }, new double[] { 0, 0, 0, 0 }, new double[] { 0, 1, 1, 0 }, //U new double[] { 0, 0, 1, 1 }, desc, RenderMode.DYNAMIC, true, Vector3D.ZERO, "BillboardSprite"); Model m = new Model(false, getTr()); m.addTriangles(tris);/*ww w . j av a2 s.c o m*/ setModel(m.finalizeModel()); }
From source file:org.jtrfp.trcl.obj.MeterBar.java
public MeterBar(TR tr, TextureDescription tex, double height, double length, boolean horizontal) { super(tr);/*from w ww .j ava 2 s . c om*/ setImmuneToOpaqueDepthTest(true); //height*=.5; //length*=.5; Model m = new Model(true, tr); Model m1 = new Model(true, tr); Model m2 = new Model(true, tr); Triangle[] tris; if (horizontal) { tris = Triangle.quad2Triangles(new double[] { -length, length, length, -length }, //X new double[] { -height, -height, height, height }, //Y new double[] { -1.0000001, -1.0000001, -1.0000001, -1.0000001 }, //Z ...hacky hacky hacky... /: new double[] { 0, 1, 1, 0 }, //U new double[] { 0, 0, 1, 1 }, //V tex, RenderMode.DYNAMIC, Vector3D.ZERO, "meterBar.horizontal"); tris[0].setAlphaBlended(true); tris[1].setAlphaBlended(true); m1.addTriangles(tris); tris = Triangle.quad2Triangles(new double[] { -length, -length, -length, -length }, //X new double[] { -height, -height, height, height }, //Y new double[] { -1.0000001, -1.0000001, -1.0000001, -1.0000001 }, //Z new double[] { 0, 0, 0, 0 }, //U new double[] { 0, 0, 1, 1 }, //V tex, RenderMode.DYNAMIC, Vector3D.ZERO, "meterBar.horizontal"); } else { tris = Triangle.quad2Triangles(new double[] { height, -height, -height, height }, //X new double[] { length, length, -length, -length }, //Y new double[] { -1.0000001, -1.0000001, -1.0000001, -1.0000001 }, //Z ...hacky hacky hacky... /: new double[] { 1, 1, 0, 0 }, //U new double[] { 1, 0, 0, 1 }, //V tex, RenderMode.DYNAMIC, Vector3D.ZERO, "meterBar.vertical"); tris[0].setAlphaBlended(true); tris[1].setAlphaBlended(true); m1.addTriangles(tris); m2 = new Model(true, tr); tris = Triangle.quad2Triangles(new double[] { height, -height, -height, height }, //X new double[] { -length, -length, -length, -length }, //Y new double[] { -1.0000001, -1.0000001, -1.0000001, -1.0000001 }, //Z new double[] { 0, 0, 0, 0 }, //U new double[] { 1, 0, 0, 1 }, //V tex, RenderMode.DYNAMIC, Vector3D.ZERO, "meterBar.vertical"); } controller.setFrame(0); tris[0].setAlphaBlended(true); tris[1].setAlphaBlended(true); m2.addTriangles(tris); m2.setController(controller); m2.setAnimateUV(true); m.addFrame(m1); m.addFrame(m2); m.setFrameDelayInMillis(1000); m.setAnimateUV(true); m.setController(controller); m.finalizeModel(); setModel(m); }
From source file:org.jtrfp.trcl.obj.Player.java
public void resetVelocityRotMomentum() { //probeForBehavior(HasPropulsion.class).setPropulsion(0); probeForBehavior(RotationalMomentumBehavior.class).setEquatorialMomentum(0).setLateralMomentum(0) .setPolarMomentum(0);// w w w .java 2 s .c o m probeForBehavior(MovesByVelocity.class).setVelocity(Vector3D.ZERO); }
From source file:org.jtrfp.trcl.obj.ProjectileFactory.java
public ProjectileFactory(TR tr, Weapon weapon, ExplosionType explosionType) { this.tr = tr; this.weapon = weapon; this.projectileSpeed = weapon.getSpeed() / TR.crossPlatformScalar; Model modelToUse;//from w w w. j a v a2 s .c om TextureDescription t; Triangle[] tris; final int damageOnImpact = weapon.getDamage(); try { modelToUse = new Model(false, tr); final ModelingType modelingType = weapon.getModelingType(); if (modelingType instanceof ModelingType.FlatModelingType) { ModelingType.FlatModelingType mt = (ModelingType.FlatModelingType) modelingType; Dimension dims = mt.getSegmentSize(); final int laserplaneLength = (int) (dims.getWidth() / TR.crossPlatformScalar); final int laserplaneWidth = (int) (dims.getHeight() / TR.crossPlatformScalar); t = tr.getResourceManager() .getRAWAsTexture(tr.config.getGameVersion() != GameVersion.TV ? mt.getF3RawFileName() : mt.getTvRawFileName(), tr.getDarkIsClearPaletteVL(), null, false); final double Y_SLANT = 1024; tris = (Triangle.quad2Triangles( new double[] { -laserplaneLength / 2., laserplaneLength / 2., laserplaneLength / 2., -laserplaneLength / 2. }, //X new double[] { 0, 0, Y_SLANT, Y_SLANT }, new double[] { -laserplaneWidth / 2., -laserplaneWidth / 2., laserplaneWidth / 2., laserplaneWidth / 2. }, //YZ new double[] { 1, 0, 0, 1 }, new double[] { 0, 0, 1, 1 }, t, RenderMode.STATIC, Vector3D.ZERO, "ProjectileFactory:" + weapon.toString()));//UVtr tris[0].setAlphaBlended(true); tris[1].setAlphaBlended(true); modelToUse.addTriangles(tris); modelToUse.finalizeModel(); for (int i = 0; i < projectiles.length; i++) { projectiles[i] = new ProjectileObject3D(tr, modelToUse, weapon, explosionType); } } //end if(isLaser) else if (modelingType instanceof ModelingType.BillboardModelingType) { final ModelingType.BillboardModelingType mt = (ModelingType.BillboardModelingType) modelingType; final Texture[] frames = new Texture[mt.getRawFileNames().length]; final String[] fileNames = mt.getRawFileNames(); final ResourceManager mgr = tr.getResourceManager(); final ColorPaletteVectorList pal = tr.getGlobalPaletteVL(); GL3 gl = tr.gpu.get().getGl(); for (int i = 0; i < frames.length; i++) { frames[i] = (Texture) mgr.getRAWAsTexture(fileNames[i], pal, null, false); } //end for(frames) TextureDescription tex = new AnimatedTexture( new Sequencer(mt.getTimeInMillisPerFrame(), frames.length, false), frames); for (int i = 0; i < projectiles.length; i++) { projectiles[i] = new ProjectileBillboard(tr, weapon, tex, ExplosionType.Billow); } } //end (billboard) else if (modelingType instanceof ModelingType.BINModelingType) { final ModelingType.BINModelingType mt = (ModelingType.BINModelingType) modelingType; modelToUse = tr.getResourceManager().getBINModel(mt.getBinFileName(), tr.getGlobalPaletteVL(), null, tr.gpu.get().getGl()); for (int i = 0; i < projectiles.length; i++) { projectiles[i] = new ProjectileObject3D(tr, modelToUse, weapon, explosionType); } } //end BIN Modeling Type else { throw new RuntimeException("Unhandled ModelingType: " + modelingType.getClass().getName()); } } //end try catch (Exception e) { e.printStackTrace(); } //CLAUSE: FFF needs destroysEvertyhing behavior if (weapon == Weapon.DAM) { for (int i = 0; i < projectiles.length; i++) { ((WorldObject) projectiles[i]).addBehavior(new DestroysEverythingBehavior()); } } //end if(DAM) //Sound String soundFile = null; switch (weapon) { //PEW!!! case PAC: { soundFile = "LASER2.WAV"; break; } case ION: { soundFile = "LASER3.WAV"; break; } case RTL: { soundFile = "LASER4.WAV"; break; } case DAM: case redLaser: case blueLaser: case greenLaser: case purpleLaser: case purpleRing: { soundFile = "LASER5.WAV"; break; } //Missile case enemyMissile: case SWT: case MAM: case SAD: { soundFile = "MISSILE.WAV"; break; } //SILENT case purpleBall: case goldBall: case fireBall: case blueFireBall: case bullet: case bossW8: case bossW7: case bossW6: case atomWeapon: default: break; }//end case() soundTexture = soundFile != null ? tr.getResourceManager().soundTextures.get(soundFile) : null; }
From source file:org.jtrfp.trcl.obj.Sprite2D.java
public Sprite2D(TR tr, double z, double width, double height, TextureDescription tex, boolean useAlpha) { super(tr);/*from w w w .j a va2 s .c om*/ if (tex == null) throw new NullPointerException("Supplied texture intolerably null."); this.texture = tex; final Model m = new Model(false, tr); Triangle[] tris = Triangle.quad2Triangles(new double[] { -width / 2, width / 2, width / 2, -width / 2 }, new double[] { -height / 2, -height / 2, height / 2, height / 2 }, new double[] { z, z, z, z }, new double[] { 0, 1, 1, 0 }, new double[] { 0, 0, 1, 1 }, tex, RenderMode.DYNAMIC, useAlpha, Vector3D.ZERO, "Sprite2D non-segmented"); m.addTriangles(tris); setModel(m); setTop(Vector3D.PLUS_J); setActive(true); setVisible(true); }
From source file:org.jtrfp.trcl.obj.Sprite2D.java
public Sprite2D(TR tr, double z, double width, double height, TextureDescription[] tex, boolean useAlpha) { super(tr);//from w ww. jav a 2s.c om if (tex == null) throw new NullPointerException("Supplied texture intolerably null."); this.texture = tex[0]; final Model m = new Model(false, tr); final int numSegs = tex.length; for (int seg = 0; seg < numSegs; seg++) { final double segWidth = width / numSegs; final double x = (-width / 2) + segWidth * seg; Triangle[] tris = Triangle.quad2Triangles(new double[] { x, x + segWidth, x + segWidth, x }, new double[] { -height / 2, -height / 2, height / 2, height / 2 }, new double[] { z, z, z, z }, new double[] { 0, 1, 1, 0 }, new double[] { 0, 0, 1, 1 }, tex[seg], RenderMode.DYNAMIC, Vector3D.ZERO, "Sprite2D " + numSegs + " segments"); tris[0].setAlphaBlended(true); tris[1].setAlphaBlended(true); m.addTriangles(tris); } // end for(segs) setModel(m.finalizeModel()); setTop(Vector3D.PLUS_J); setHeading(Vector3D.PLUS_K); setActive(true); setVisible(true); }
From source file:org.jtrfp.trcl.OverworldSystem.java
public void loadLevel(final LVLFile lvl, final TDFFile tdf) { try {/*from w ww .j a va 2s .c om*/ final World w = tr.getWorld(); Color[] globalPalette = tr.getResourceManager().getPalette(lvl.getGlobalPaletteFile()); TextureDescription[] texturePalette = tr.getResourceManager().getTextures(lvl.getLevelTextureListFile(), new ColorPaletteVectorList(globalPalette), null, false); System.out.println("Loading height map..."); altitudeMap = new InterpolatingAltitudeMap( tr.getResourceManager().getRAWAltitude(lvl.getHeightMapOrTunnelFile())); System.out.println("... Done"); final TextureMesh textureMesh = tr.getResourceManager() .getTerrainTextureMesh(lvl.getTexturePlacementFile(), texturePalette); // Terrain System.out.println("Building terrain..."); boolean flatShadedTerrain = lvl.getHeightMapOrTunnelFile().toUpperCase().contains("BORG");//TODO: This should be in a config file. terrainSystem = new TerrainSystem(altitudeMap, textureMesh, TR.mapSquareSize, this, terrainMirror, tr, tdf, flatShadedTerrain, terrainReporter); System.out.println("...Done."); // Clouds System.out.println("Setting up sky..."); skySystem = new SkySystem(this, tr, this, lvl, TR.mapSquareSize * 8, (int) (TR.mapWidth / (TR.mapSquareSize * 8)), w.sizeY / 4, cloudReporter); System.out.println("...Done."); // Objects System.out.println("Setting up objects..."); objectSystem = new ObjectSystem(this, tr, lvl, defList, null, Vector3D.ZERO, objectReporter); objectSystem.activate(); terrainSystem.activate(); System.out.println("...Done."); // Tunnel activators } catch (Exception e) { e.printStackTrace(); } }
From source file:org.jtrfp.trcl.SkySystem.java
private void generateClouds(OverworldSystem os) { // Set fog/*from ww w . j a v a2 s .c o m*/ try { // Create a grid for (int z = 0; z < gridSideSizeInTiles; z++) { cloudTileReporters[z].complete(); for (int x = 0; x < gridSideSizeInTiles; x++) { double xPos = x * cloudTileSideSize; double zPos = z * cloudTileSideSize; Triangle[] tris = Triangle.quad2Triangles( new double[] { 0, 0 + cloudTileSideSize, 0 + cloudTileSideSize, 0 }, new double[] { ceilingHeight, ceilingHeight, ceilingHeight, ceilingHeight }, new double[] { 0, 0, 0 + cloudTileSideSize, 0 + cloudTileSideSize }, new double[] { 0, 1, 1, 0 }, // u new double[] { 1, 1, 0, 0 }, cloudTexture, RenderMode.STATIC, Vector3D.ZERO, "CloudSystem"); final Model m = new Model(false, tr); m.setDebugName("CloudSystem.cloudQuad"); m.addTriangle(tris[0]); m.addTriangle(tris[1]); final CloudCeiling rq = new CloudCeiling(tr, m); final double[] rqPos = rq.getPosition(); rqPos[0] = xPos; rqPos[1] = ceilingHeight; rqPos[2] = zPos; rq.notifyPositionChange(); add(rq); } // end for(x) } // end for(z) } catch (Exception e) { e.printStackTrace(); } //end catch(e) }