本文整理汇总了Java中org.rajawali3d.math.Matrix4.M33属性的典型用法代码示例。如果您正苦于以下问题:Java Matrix4.M33属性的具体用法?Java Matrix4.M33怎么用?Java Matrix4.M33使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类org.rajawali3d.math.Matrix4
的用法示例。
在下文中一共展示了Matrix4.M33属性的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: project
/**
* Multiplies this {@link Vector3} by the provided 4x4 matrix and divides by w.
* Typically this is used for project/un-project of a {@link Vector3}.
*
* @param matrix double[16] array representation of a 4x4 matrix to project with.
*
* @return A reference to this {@link Vector3} to facilitate chaining.
*/
public Vector3 project(final double[] matrix) {
double l_w = x * matrix[Matrix4.M30] + y * matrix[Matrix4.M31] + z * matrix[Matrix4.M32] + matrix[Matrix4.M33];
return setAll(
(x * matrix[Matrix4.M00] + y * matrix[Matrix4.M01] + z * matrix[Matrix4.M02] + matrix[Matrix4.M03]) / l_w,
(x * matrix[Matrix4.M10] + y * matrix[Matrix4.M11] + z * matrix[Matrix4.M12] + matrix[Matrix4.M13]) / l_w,
(x * matrix[Matrix4.M20] + y * matrix[Matrix4.M21] + z * matrix[Matrix4.M22] + matrix[Matrix4.M23]) / l_w);
}
示例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;
}
示例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;
}
}
示例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;
}
}
示例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;
}
}