当前位置: 首页>>代码示例>>Java>>正文


Java Matrix4.M22属性代码示例

本文整理汇总了Java中org.rajawali3d.math.Matrix4.M22属性的典型用法代码示例。如果您正苦于以下问题:Java Matrix4.M22属性的具体用法?Java Matrix4.M22怎么用?Java Matrix4.M22使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在org.rajawali3d.math.Matrix4的用法示例。


在下文中一共展示了Matrix4.M22属性的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: multiply

/**
 * Multiplies this {@link Vector3} and the provided 4x4 matrix.
 *
 * @param matrix double[16] representation of a 4x4 matrix.
 *
 * @return A reference to this {@link Vector3} to facilitate chaining.
 */
public Vector3 multiply(final double[] matrix) {
    double vx = x, vy = y, vz = z;
    x = vx * matrix[Matrix4.M00] + vy * matrix[Matrix4.M01] + vz * matrix[Matrix4.M02] + matrix[Matrix4.M03];
    y = vx * matrix[Matrix4.M10] + vy * matrix[Matrix4.M11] + vz * matrix[Matrix4.M12] + matrix[Matrix4.M13];
    z = vx * matrix[Matrix4.M20] + vy * matrix[Matrix4.M21] + vz * matrix[Matrix4.M22] + matrix[Matrix4.M23];
    return this;
}
 
开发者ID:sujitkjha,项目名称:360-Video-Player-for-Android,代码行数:14,代码来源:Vector3.java

示例2: matrixFromPointNormalUp

/**
 * Calculates a transformation matrix based on a point, a normal and the up gravity vector.
 * The coordinate frame of the target transformation will be Z forward, X left, Y up.
 */
public static Matrix4 matrixFromPointNormalUp(double[] point, double[] normal, Vector3 up) {
    Vector3 zAxis = new Vector3(normal);
    zAxis.normalize();
    Vector3 xAxis = new Vector3();
    xAxis.crossAndSet(up, zAxis);
    xAxis.normalize();
    Vector3 yAxis = new Vector3();
    yAxis.crossAndSet(xAxis, zAxis);
    yAxis.normalize();

    double[] rot = new double[16];

    rot[Matrix4.M00] = xAxis.x;
    rot[Matrix4.M10] = xAxis.y;
    rot[Matrix4.M20] = xAxis.z;

    rot[Matrix4.M01] = yAxis.x;
    rot[Matrix4.M11] = yAxis.y;
    rot[Matrix4.M21] = yAxis.z;

    rot[Matrix4.M02] = zAxis.x;
    rot[Matrix4.M12] = zAxis.y;
    rot[Matrix4.M22] = zAxis.z;

    rot[Matrix4.M33] = 1;

    Matrix4 m = new Matrix4(rot);
    m.setTranslation(point[0], point[1], point[2]);

    return m;
}
 
开发者ID:inovex,项目名称:tango-ar-navigation-example,代码行数:35,代码来源:ScenePoseCalculator.java

示例3: readMatrix3D

/**
 * Read in 3D matrix. Passed array must be of size 16 Positions 3, 7, 11, and 15 are
 * constants and not read.
 *
 * @param matrix
 * @throws ParsingException
 * @throws IOException
 */
public void readMatrix3D(Matrix4 matrix, boolean usePrecision, boolean convert) throws ParsingException, IOException {
    final double[] m = matrix.getDoubleValues();

    if (m == null || m.length != 16)
        throw new ParsingException("Matrix array must be of size 16");

    if (convert) {
        m[Matrix4.M00] = readPrecisionNumber(usePrecision);
        m[Matrix4.M01] = readPrecisionNumber(usePrecision);
        m[Matrix4.M02] = readPrecisionNumber(usePrecision);
        m[Matrix4.M10] = readPrecisionNumber(usePrecision);
        m[Matrix4.M11] = readPrecisionNumber(usePrecision);
        m[Matrix4.M12] = readPrecisionNumber(usePrecision);
        m[Matrix4.M20] = readPrecisionNumber(usePrecision);
        m[Matrix4.M21] = readPrecisionNumber(usePrecision);
        m[Matrix4.M22] = readPrecisionNumber(usePrecision);
        m[Matrix4.M03] = readPrecisionNumber(usePrecision);
        m[Matrix4.M13] = readPrecisionNumber(usePrecision);
        m[Matrix4.M23] = -readPrecisionNumber(usePrecision);
        m[Matrix4.M30] = 0;
        m[Matrix4.M31] = 0;
        m[Matrix4.M32] = 0;
        m[Matrix4.M33] = 1;

        matrix.getTranslation(mTempVector3);
        mTempQuaternion.fromMatrix(matrix);
        mTempQuaternion.computeW();
        mTempQuaternion.z = -mTempQuaternion.z;
        mTempQuaternion.w = -mTempQuaternion.w;
        matrix.setAll(mTempQuaternion);
        matrix.setTranslation(mTempVector3);
    } else {
        m[0] = readPrecisionNumber(usePrecision);
        m[1] = readPrecisionNumber(usePrecision);
        m[2] = readPrecisionNumber(usePrecision);
        m[3] = 0;
        m[4] = readPrecisionNumber(usePrecision);
        m[5] = readPrecisionNumber(usePrecision);
        m[6] = readPrecisionNumber(usePrecision);
        m[7] = 0;
        m[8] = readPrecisionNumber(usePrecision);
        m[9] = readPrecisionNumber(usePrecision);
        m[10] = readPrecisionNumber(usePrecision);
        m[11] = 0;
        m[12] = readPrecisionNumber(usePrecision);
        m[13] = readPrecisionNumber(usePrecision);
        m[14] = readPrecisionNumber(usePrecision);
        m[Matrix4.M33] = 1;
    }
}
 
开发者ID:sujitkjha,项目名称:360-Video-Player-for-Android,代码行数:58,代码来源:LoaderAWD.java

示例4: getViewMatrix

public Matrix4 getViewMatrix() {
	synchronized (mFrustumLock) {
           // Create an inverted orientation. This is because the view matrix is the
           // inverse operation of a model matrix
           mTmpOrientation.setAll(mOrientation);
           mTmpOrientation.inverse();

           // Create the view matrix
           final double[] matrix = mViewMatrix.getDoubleValues();
           // Precompute these factors for speed
           final double x2 = mTmpOrientation.x * mTmpOrientation.x;
           final double y2 = mTmpOrientation.y * mTmpOrientation.y;
           final double z2 = mTmpOrientation.z * mTmpOrientation.z;
           final double xy = mTmpOrientation.x * mTmpOrientation.y;
           final double xz = mTmpOrientation.x * mTmpOrientation.z;
           final double yz = mTmpOrientation.y * mTmpOrientation.z;
           final double wx = mTmpOrientation.w * mTmpOrientation.x;
           final double wy = mTmpOrientation.w * mTmpOrientation.y;
           final double wz = mTmpOrientation.w * mTmpOrientation.z;

           matrix[Matrix4.M00] = 1.0 - 2.0 * (y2 + z2);
           matrix[Matrix4.M10] = 2.0 * (xy - wz);
           matrix[Matrix4.M20] = 2.0 * (xz + wy);
           matrix[Matrix4.M30] = 0;

           matrix[Matrix4.M01] = 2.0 * (xy + wz);
           matrix[Matrix4.M11] = 1.0 - 2.0 * (x2 + z2);
           matrix[Matrix4.M21] = 2.0 * (yz - wx);
           matrix[Matrix4.M31] = 0;

           matrix[Matrix4.M02] = 2.0 * (xz - wy);
           matrix[Matrix4.M12] = 2.0 * (yz + wx);
           matrix[Matrix4.M22] = 1.0 - 2.0 * (x2 + y2);
           matrix[Matrix4.M32] = 0;

           matrix[Matrix4.M03] = -mPosition.x * matrix[Matrix4.M00]
               + -mPosition.y * matrix[Matrix4.M01] + -mPosition.z * matrix[Matrix4.M02];
           matrix[Matrix4.M13] = -mPosition.x * matrix[Matrix4.M10]
               + -mPosition.y * matrix[Matrix4.M11] + -mPosition.z * matrix[Matrix4.M12];
           matrix[Matrix4.M23] = -mPosition.x * matrix[Matrix4.M20]
               + -mPosition.y * matrix[Matrix4.M21] + -mPosition.z * matrix[Matrix4.M22];
           matrix[Matrix4.M33] = 1;

           mTmpOrientation.setAll(mLocalOrientation).inverse();
           mViewMatrix.leftMultiply(mTmpOrientation.toRotationMatrix());
           //mViewMatrix.rotate(mTmpOrientation);

		return mViewMatrix;
	}
}
 
开发者ID:sujitkjha,项目名称:360-Video-Player-for-Android,代码行数:50,代码来源:Camera.java

示例5: getViewMatrix

public Matrix4 getViewMatrix() {
	synchronized (mFrustumLock) {
           // Create an inverted orientation. This is because the view matrix is the
           // inverse operation of a model matrix
           mTmpOrientation.setAll(mOrientation);
           mTmpOrientation.inverse();

           // Create the view matrix
           final double[] matrix = mViewMatrix.getDoubleValues();
           // Precompute these factors for speed
           final double x2 = mTmpOrientation.x * mTmpOrientation.x;
           final double y2 = mTmpOrientation.y * mTmpOrientation.y;
           final double z2 = mTmpOrientation.z * mTmpOrientation.z;
           final double xy = mTmpOrientation.x * mTmpOrientation.y;
           final double xz = mTmpOrientation.x * mTmpOrientation.z;
           final double yz = mTmpOrientation.y * mTmpOrientation.z;
           final double wx = mTmpOrientation.w * mTmpOrientation.x;
           final double wy = mTmpOrientation.w * mTmpOrientation.y;
           final double wz = mTmpOrientation.w * mTmpOrientation.z;

           matrix[Matrix4.M00] = 1.0 - 2.0 * (y2 + z2);
           matrix[Matrix4.M10] = 2.0 * (xy - wz);
           matrix[Matrix4.M20] = 2.0 * (xz + wy);
           matrix[Matrix4.M30] = 0;

           matrix[Matrix4.M01] = 2.0 * (xy + wz);
           matrix[Matrix4.M11] = 1.0 - 2.0 * (x2 + z2);
           matrix[Matrix4.M21] = 2.0 * (yz - wx);
           matrix[Matrix4.M31] = 0;

           matrix[Matrix4.M02] = 2.0 * (xz - wy);
           matrix[Matrix4.M12] = 2.0 * (yz + wx);
           matrix[Matrix4.M22] = 1.0 - 2.0 * (x2 + y2);
           matrix[Matrix4.M32] = 0;

           matrix[Matrix4.M03] = -mPosition.x * matrix[Matrix4.M00]
               + -mPosition.y * matrix[Matrix4.M01] + -mPosition.z * matrix[Matrix4.M02];
           matrix[Matrix4.M13] = -mPosition.x * matrix[Matrix4.M10]
               + -mPosition.y * matrix[Matrix4.M11] + -mPosition.z * matrix[Matrix4.M12];
           matrix[Matrix4.M23] = -mPosition.x * matrix[Matrix4.M20]
               + -mPosition.y * matrix[Matrix4.M21] + -mPosition.z * matrix[Matrix4.M22];
           matrix[Matrix4.M33] = 1;

           mTmpOrientation.setAll(mLocalOrientation).inverse();
           mViewMatrix.leftMultiply(mTmpOrientation.toRotationMatrix(mScratchMatrix));
		return mViewMatrix;
	}
}
 
开发者ID:godstale,项目名称:VR-Defense-Game,代码行数:48,代码来源:Camera.java


注:本文中的org.rajawali3d.math.Matrix4.M22属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。