本文整理汇总了Java中javax.vecmath.Matrix3f.getRow方法的典型用法代码示例。如果您正苦于以下问题:Java Matrix3f.getRow方法的具体用法?Java Matrix3f.getRow怎么用?Java Matrix3f.getRow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类javax.vecmath.Matrix3f
的用法示例。
在下文中一共展示了Matrix3f.getRow方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: transformAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
public static void transformAabb(Vector3f halfExtents, float margin, Transform t, Vector3f aabbMinOut, Vector3f aabbMaxOut) {
Vector3f halfExtentsWithMargin = Stack.alloc(Vector3f.class);
halfExtentsWithMargin.x = halfExtents.x + margin;
halfExtentsWithMargin.y = halfExtents.y + margin;
halfExtentsWithMargin.z = halfExtents.z + margin;
Matrix3f abs_b = Stack.alloc(t.basis);
MatrixUtil.absolute(abs_b);
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f center = Stack.alloc(t.origin);
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(halfExtentsWithMargin);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(halfExtentsWithMargin);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(halfExtentsWithMargin);
aabbMinOut.sub(center, extent);
aabbMaxOut.add(center, extent);
}
示例2: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
@Override
public void getAabb(Transform t, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f halfExtents = getHalfExtentsWithoutMargin(Stack.alloc(Vector3f.class));
Matrix3f abs_b = Stack.alloc(t.basis);
MatrixUtil.absolute(abs_b);
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f center = Stack.alloc(t.origin);
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(halfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(halfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(halfExtents);
Vector3f margin = Stack.alloc(Vector3f.class);
margin.set(getMargin(), getMargin(), getMargin());
extent.add(margin);
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例3: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
/**
* getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version.
*/
@Override
public void getAabb(Transform trans, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f localHalfExtents = Stack.alloc(Vector3f.class);
localHalfExtents.sub(localAabbMax, localAabbMin);
localHalfExtents.scale(0.5f);
localHalfExtents.x += getMargin();
localHalfExtents.y += getMargin();
localHalfExtents.z += getMargin();
Vector3f localCenter = Stack.alloc(Vector3f.class);
localCenter.add(localAabbMax, localAabbMin);
localCenter.scale(0.5f);
Matrix3f abs_b = Stack.alloc(trans.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = Stack.alloc(localCenter);
trans.transform(center);
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(localHalfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(localHalfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(localHalfExtents);
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例4: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
@Override
public void getAabb(Transform trans, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f localHalfExtents = Stack.alloc(Vector3f.class);
localHalfExtents.sub(localAabbMax, localAabbMin);
localHalfExtents.scale(0.5f);
Vector3f localCenter = Stack.alloc(Vector3f.class);
localCenter.add(localAabbMax, localAabbMin);
localCenter.scale(0.5f);
Matrix3f abs_b = Stack.alloc(trans.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = Stack.alloc(localCenter);
trans.transform(center);
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(localHalfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(localHalfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(localHalfExtents);
Vector3f margin = Stack.alloc(Vector3f.class);
margin.set(getMargin(), getMargin(), getMargin());
extent.add(margin);
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例5: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
@Override
public void getAabb(Transform t, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f halfExtents = Stack.alloc(Vector3f.class);
halfExtents.set(getRadius(), getRadius(), getRadius());
VectorUtil.setCoord(halfExtents, upAxis, getRadius() + getHalfHeight());
halfExtents.x += getMargin();
halfExtents.y += getMargin();
halfExtents.z += getMargin();
Matrix3f abs_b = Stack.alloc(Matrix3f.class);
abs_b.set(t.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = t.origin;
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(halfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(halfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(halfExtents);
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例6: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
/**
* getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version.
*/
@Override
public void getAabb(Transform trans, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f localHalfExtents = Stack.alloc(Vector3f.class);
localHalfExtents.sub(localAabbMax, localAabbMin);
localHalfExtents.scale(0.5f);
Vector3f localCenter = Stack.alloc(Vector3f.class);
localCenter.add(localAabbMax, localAabbMin);
localCenter.scale(0.5f);
Matrix3f abs_b = Stack.alloc(trans.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = Stack.alloc(localCenter);
trans.transform(center);
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(localHalfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(localHalfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(localHalfExtents);
extent.x += getMargin();
extent.y += getMargin();
extent.z += getMargin();
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例7: getNonvirtualAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
private void getNonvirtualAabb(Transform trans, Vector3f aabbMin, Vector3f aabbMax, float margin) {
// lazy evaluation of local aabb
assert (isLocalAabbValid);
assert (localAabbMin.x <= localAabbMax.x);
assert (localAabbMin.y <= localAabbMax.y);
assert (localAabbMin.z <= localAabbMax.z);
Vector3f localHalfExtents = Stack.alloc(Vector3f.class);
localHalfExtents.sub(localAabbMax, localAabbMin);
localHalfExtents.scale(0.5f);
Vector3f localCenter = Stack.alloc(Vector3f.class);
localCenter.add(localAabbMax, localAabbMin);
localCenter.scale(0.5f);
Matrix3f abs_b = Stack.alloc(trans.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = Stack.alloc(localCenter);
trans.transform(center);
Vector3f extent = Stack.alloc(Vector3f.class);
Vector3f tmp = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(localHalfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(localHalfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(localHalfExtents);
extent.x += margin;
extent.y += margin;
extent.z += margin;
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例8: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
@Override
public void getAabb(Transform t, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f tmp = Stack.alloc(Vector3f.class);
Vector3f halfExtents = Stack.alloc(Vector3f.class);
halfExtents.set(getRadius(), getRadius(), getRadius());
VectorUtil.setCoord(halfExtents, upAxis, getRadius() + getHalfHeight());
Matrix3f abs_b = Stack.alloc(Matrix3f.class);
abs_b.set(t.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = t.origin;
Vector3f extent = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(halfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(halfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(halfExtents);
extent.x += getMargin();
extent.y += getMargin();
extent.z += getMargin();
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例9: evaluateRowCol
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
private boolean evaluateRowCol(ScriptVariable[] args, int tok)
throws ScriptException {
if (args.length != 1)
return false;
int n = ScriptVariable.iValue(args[0]) - 1;
ScriptVariable x1 = getX();
float[] f;
switch (x1.tok) {
case Token.matrix3f:
if (n < 0 || n > 2)
return false;
Matrix3f m = (Matrix3f) x1.value;
switch (tok) {
case Token.row:
f = new float[3];
m.getRow(n, f);
return addX(f);
case Token.col:
default:
f = new float[3];
m.getColumn(n, f);
return addX(f);
}
case Token.matrix4f:
if (n < 0 || n > 2)
return false;
Matrix4f m4 = (Matrix4f) x1.value;
switch (tok) {
case Token.row:
f = new float[4];
m4.getRow(n, f);
return addX(f);
case Token.col:
default:
f = new float[4];
m4.getColumn(n, f);
return addX(f);
}
}
return false;
}
示例10: getAabb
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
@Override
public void getAabb(Transform trans, Vector3f aabbMin, Vector3f aabbMax) {
Vector3f localAabbMin = bvhTriMeshShape.getLocalAabbMin(Stack.alloc(Vector3f.class));
Vector3f localAabbMax = bvhTriMeshShape.getLocalAabbMax(Stack.alloc(Vector3f.class));
Vector3f tmpLocalAabbMin = Stack.alloc(Vector3f.class);
Vector3f tmpLocalAabbMax = Stack.alloc(Vector3f.class);
VectorUtil.mul(tmpLocalAabbMin, localAabbMin, localScaling);
VectorUtil.mul(tmpLocalAabbMax, localAabbMax, localScaling);
localAabbMin.x = (localScaling.x >= 0f) ? tmpLocalAabbMin.x : tmpLocalAabbMax.x;
localAabbMin.y = (localScaling.y >= 0f) ? tmpLocalAabbMin.y : tmpLocalAabbMax.y;
localAabbMin.z = (localScaling.z >= 0f) ? tmpLocalAabbMin.z : tmpLocalAabbMax.z;
localAabbMax.x = (localScaling.x <= 0f) ? tmpLocalAabbMin.x : tmpLocalAabbMax.x;
localAabbMax.y = (localScaling.y <= 0f) ? tmpLocalAabbMin.y : tmpLocalAabbMax.y;
localAabbMax.z = (localScaling.z <= 0f) ? tmpLocalAabbMin.z : tmpLocalAabbMax.z;
Vector3f localHalfExtents = Stack.alloc(Vector3f.class);
localHalfExtents.sub(localAabbMax, localAabbMin);
localHalfExtents.scale(0.5f);
float margin = bvhTriMeshShape.getMargin();
localHalfExtents.x += margin;
localHalfExtents.y += margin;
localHalfExtents.z += margin;
Vector3f localCenter = Stack.alloc(Vector3f.class);
localCenter.add(localAabbMax, localAabbMin);
localCenter.scale(0.5f);
Matrix3f abs_b = Stack.alloc(trans.basis);
MatrixUtil.absolute(abs_b);
Vector3f center = Stack.alloc(localCenter);
trans.transform(center);
Vector3f extent = Stack.alloc(Vector3f.class);
Vector3f tmp = Stack.alloc(Vector3f.class);
abs_b.getRow(0, tmp);
extent.x = tmp.dot(localHalfExtents);
abs_b.getRow(1, tmp);
extent.y = tmp.dot(localHalfExtents);
abs_b.getRow(2, tmp);
extent.z = tmp.dot(localHalfExtents);
aabbMin.sub(center, extent);
aabbMax.add(center, extent);
}
示例11: diagonalize
import javax.vecmath.Matrix3f; //导入方法依赖的package包/类
public static void diagonalize(Matrix3f m_el, Matrix3f rot, float threshold, int maxSteps) {
rot.setIdentity();
for (int step = maxSteps; step > 0; step--) {
int p = 0;
int q = 1;
int r = 2;
float max = Math.abs(m_el.getElement(0, 1));
float v = Math.abs(m_el.getElement(0, 2));
if (v > max) {
p = 1;
q = 2;
r = 0;
max = v;
}
float t = threshold * Math.abs(m_el.getElement(0, 0)) + Math.abs(m_el.getElement(1, 1)) + Math.abs(m_el.getElement(2, 2));
if (max <= t) {
if (max <= BulletGlobals.SIMD_EPSILON * t) {
return;
}
step = 1;
}
float mpq = m_el.getElement(p, q);
float theta = m_el.getElement(q, q) - m_el.getElement(p, p) / (2 * mpq);
float theta2 = theta * theta;
float cos;
float sin;
if (theta2 * theta2 < 10f / BulletGlobals.SIMD_EPSILON) {
t = (theta >= 0)? 1f / (theta + (float)Math.sqrt(.5f / theta2))
: 1f / (theta - (float)Math.sqrt(1 + theta2));
cos = 1 / (float)Math.sqrt(1 + t * t);
sin = cos * t;
} else {
t = 1f / (theta * (2 + .5f / theta2));
cos = 1 - .5f * t * t;
sin = cos * t;
}
m_el.setElement(p, q, 0);
m_el.setElement(q, p, 0);
m_el.setElement(p, p, m_el.getElement(p, p) - t * mpq);
m_el.setElement(q, q, m_el.getElement(q, q) + t * mpq);
float mrp = m_el.getElement(r, p);
float mrq = m_el.getElement(r, q);
float tmp1 = cos * mrp - sin * mrq;
m_el.setElement(r, p, tmp1);
m_el.setElement(p, r, tmp1);
m_el.setElement(r, q, tmp1);
m_el.setElement(q, r, tmp1);
Vector3f row = new Vector3f();
for (int i = 0; i < 3; i++) {
m_el.getRow(i, row);
mrp = VectorUtil.getCoord(row, p);
mrq = VectorUtil.getCoord(row, q);
VectorUtil.setCoord(row, p, cos * mrp - sin * mrq);
VectorUtil.setCoord(row, q, cos * mrq - sin * mrp);
}
}
}