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


Java Matrix3f.getRow方法代码示例

本文整理汇总了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);
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:24,代码来源:AabbUtil2.java

示例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);
}
 
开发者ID:unktomi,项目名称:form-follows-function,代码行数:26,代码来源:BoxShape.java

示例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);
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:36,代码来源:CompoundShape.java

示例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);
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:34,代码来源:TriangleMeshShape.java

示例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);
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:30,代码来源:CapsuleShape.java

示例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);
}
 
开发者ID:unktomi,项目名称:form-follows-function,代码行数:37,代码来源:CompoundShape.java

示例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);
}
 
开发者ID:unktomi,项目名称:form-follows-function,代码行数:40,代码来源:PolyhedralConvexShape.java

示例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);
}
 
开发者ID:unktomi,项目名称:form-follows-function,代码行数:30,代码来源:CapsuleShape.java

示例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;

}
 
开发者ID:mleoking,项目名称:PhET,代码行数:43,代码来源:ScriptMathProcessor.java

示例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);
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:49,代码来源:ScaledBvhTriangleMeshShape.java

示例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);
        }
    }
}
 
开发者ID:unktomi,项目名称:form-follows-function,代码行数:59,代码来源:MatrixUtil.java


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