Package com.ardor3d.math

Examples of com.ardor3d.math.Vector4


    private void updateGrid(final int from, final int to) {
        final double time = timer.getTimeInSeconds();
        final double du = 1.0f / (double) (sizeX - 1);
        final double dv = 1.0f / (double) (sizeY - 1);

        final Vector4 pointTop = Vector4.fetchTempInstance();
        final Vector4 pointFinal = Vector4.fetchTempInstance();
        final Vector4 pointBottom = Vector4.fetchTempInstance();

        int smallerFrom = from;
        if (smallerFrom > 0) {
            smallerFrom--;
        }
        int biggerTo = to;
        if (biggerTo < sizeY) {
            biggerTo++;
        }
        double u = 0, v = smallerFrom * dv;
        int index = smallerFrom * sizeX * 3;
        for (int y = smallerFrom; y < biggerTo; y++) {
            for (int x = 0; x < sizeX; x++) {
                pointTop.lerpLocal(intersectTopLeft, intersectTopRight, u);
                pointBottom.lerpLocal(intersectBottomLeft, intersectBottomRight, u);
                pointFinal.lerpLocal(pointTop, pointBottom, v);

                pointFinal.setX(pointFinal.getX() / pointFinal.getW());
                pointFinal.setZ(pointFinal.getZ() / pointFinal.getW());
                pointFinal.setY(heightGenerator.getHeight(pointFinal.getX(), pointFinal.getZ(), time));
View Full Code Here


        _corners[7].addLocal(-_extents.getX(), -_extents.getY(), -_extents.getZ());

        final ReadOnlyMatrix4 mvMatrix = getModelViewMatrix();
        double optimalCameraNear = Double.MAX_VALUE;
        double optimalCameraFar = -Double.MAX_VALUE;
        final Vector4 position = Vector4.fetchTempInstance();
        for (int i = 0; i < _corners.length; i++) {
            position.set(_corners[i].getX(), _corners[i].getY(), _corners[i].getZ(), 1);
            mvMatrix.applyPre(position, position);

            optimalCameraNear = Math.min(-position.getZ(), optimalCameraNear);
            optimalCameraFar = Math.max(-position.getZ(), optimalCameraFar);
        }
        Vector4.releaseTempInstance(position);

        // XXX: use of getFrustumNear and getFrustumFar seems suspicious...
        // XXX: It depends on the frustum being reset each update
View Full Code Here

        double fMinZ = Double.POSITIVE_INFINITY;
        double fMaxZ = Double.NEGATIVE_INFINITY;

        final ReadOnlyMatrix4 lightviewproj = shadowCam.getModelViewProjectionMatrix();

        final Vector4 position = Vector4.fetchTempInstance();
        for (final Vector3 frustumCorner : frustumCorners) {
            position.set(frustumCorner.getX(), frustumCorner.getY(), frustumCorner.getZ(), 1);
            lightviewproj.applyPre(position, position);

            position.setX(position.getX() / position.getW());
            position.setY(position.getY() / position.getW());
            position.setZ(position.getZ());

            fMinX = Math.min(position.getX(), fMinX);
            fMaxX = Math.max(position.getX(), fMaxX);

            fMinY = Math.min(position.getY(), fMinY);
            fMaxY = Math.max(position.getY(), fMaxY);

            fMinZ = Math.min(position.getZ(), fMinZ);
            fMaxZ = Math.max(position.getZ(), fMaxZ);
        }

        double width = 0;
        double height = 0;
        fMinX = clamp(fMinX, -1.0, 1.0);
        fMaxX = clamp(fMaxX, -1.0, 1.0);
        fMinY = clamp(fMinY, -1.0, 1.0);
        fMaxY = clamp(fMaxY, -1.0, 1.0);

        // Make sure the minimum z is at least a specified distance from
        // the target.
        fMinZ = Math.min(fMinZ, distance - _minimumLightDistance);
        fMinZ = Math.max(10.0, fMinZ);

        width = fMinZ * (fMaxX - fMinX) * 0.5;
        height = fMinZ * (fMaxY - fMinY) * 0.5;

        final Vector3 newCenter = Vector3.fetchTempInstance();
        position.set((fMinX + fMaxX) * 0.5, (fMinY + fMaxY) * 0.5, 1.0, 1);
        shadowCam.getModelViewProjectionInverseMatrix().applyPre(position, position);
        position.divideLocal(position.getW());
        newCenter.set(position.getX(), position.getY(), position.getZ());

        shadowCam.lookAt(newCenter, Vector3.UNIT_Y);

        Vector3.releaseTempInstance(newCenter);
        Vector4.releaseTempInstance(position);
View Full Code Here

TOP

Related Classes of com.ardor3d.math.Vector4

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.