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

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

Introduction

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

Prototype

Vector3D ZERO

To view the source code for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO.

Click Source Link

Document

Null vector (coordinates: 0, 0, 0).

Usage

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