com.badlogic.gdx.math.Matrix4.trn()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(8.4k)|赞(0)|评价(0)|浏览(81)

本文整理了Java中com.badlogic.gdx.math.Matrix4.trn()方法的一些代码示例,展示了Matrix4.trn()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Matrix4.trn()方法的具体详情如下:
包路径:com.badlogic.gdx.math.Matrix4
类名称:Matrix4
方法名:trn

Matrix4.trn介绍

[英]Adds a translational component to the matrix in the 4th column. The other columns are untouched.
[中]将平移分量添加到第4列的矩阵中。其他的柱子都没动过。

代码示例

代码示例来源:origin: libgdx/libgdx

btRigidBody rightlowerleg = (btRigidBody)world.add("lowerleg", x + 0.18f, y + 0.2f, z).body;
btRigidBody leftupperarm = (btRigidBody)world.add("upperarm",
  tmpM.setFromEulerAnglesRad(PI2, 0, 0).trn(x - 0.35f, y + 1.45f, z)).body;
btRigidBody leftlowerarm = (btRigidBody)world.add("lowerarm", tmpM.setFromEulerAnglesRad(PI2, 0, 0)
  .trn(x - 0.7f, y + 1.45f, z)).body;
btRigidBody rightupperarm = (btRigidBody)world.add("upperarm",
  tmpM.setFromEulerAnglesRad(-PI2, 0, 0).trn(x + 0.35f, y + 1.45f, z)).body;
btRigidBody rightlowerarm = (btRigidBody)world.add("lowerarm",
  tmpM.setFromEulerAnglesRad(-PI2, 0, 0).trn(x + 0.7f, y + 1.45f, z)).body;
localA.setFromEulerAnglesRad(0, PI2, 0).trn(0, 0.15f, 0);
localB.setFromEulerAnglesRad(0, PI2, 0).trn(0, -0.15f, 0);
constraints.add(hingeC = new btHingeConstraint(pelvis, spine, localA, localB));
hingeC.setLimit(-PI4, PI2);
localA.setFromEulerAnglesRad(PI2, 0, 0).trn(0, 0.3f, 0);
localB.setFromEulerAnglesRad(PI2, 0, 0).trn(0, -0.14f, 0);
constraints.add(coneC = new btConeTwistConstraint(spine, head, localA, localB));
coneC.setLimit(PI4, PI4, PI2);
localA.setFromEulerAnglesRad(-PI4 * 5f, 0, 0).trn(-0.18f, -0.1f, 0);
localB.setFromEulerAnglesRad(-PI4 * 5f, 0, 0).trn(0, 0.225f, 0);
constraints.add(coneC = new btConeTwistConstraint(pelvis, leftupperleg, localA, localB));
coneC.setLimit(PI4, PI4, 0);
localA.setFromEulerAnglesRad(0, PI2, 0).trn(0, -0.225f, 0);
localB.setFromEulerAnglesRad(0, PI2, 0).trn(0, 0.185f, 0);
constraints.add(hingeC = new btHingeConstraint(leftupperleg, leftlowerleg, localA, localB));
hingeC.setLimit(0, PI2);

代码示例来源:origin: libgdx/libgdx

@Override
public void render () {
  transform.idt();
  if (rotateCheckBox.isChecked())
    transform.rotate(Vector3.Y, rotation = (rotation + rotationSpeed * Gdx.graphics.getRawDeltaTime()) % 360);
  if (moveCheckBox.isChecked()) {
    movement = (movement + moveSpeed * Gdx.graphics.getRawDeltaTime()) % 1f;
    final float sm = MathUtils.sin(movement * MathUtils.PI2);
    final float cm = MathUtils.cos(movement * MathUtils.PI2);
    transform.trn(0, moveRadius * cm, moveRadius * sm);
  }
  super.render();
  stringBuilder.setLength(0);
  getStatus(stringBuilder);
  fpsLabel.setText(stringBuilder);
  hud.act(Gdx.graphics.getDeltaTime());
  hud.draw();
}

代码示例来源:origin: libgdx/libgdx

@Override
  public void render () {
    angle += Gdx.graphics.getDeltaTime() * 40.0f;
    float aspect = Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();
    projection.setToProjection(1.0f, 20.0f, 60.0f, aspect);
    view.idt().trn(0, 0, -2.0f);
    model.setToRotation(axis, angle);
    combined.set(projection).mul(view).mul(model);

    Gdx.gl20.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight());
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shader.begin();
    shader.setUniformMatrix("u_mvpMatrix", combined);
    mesh.render(shader, GL20.GL_TRIANGLES);
    shader.end();

    Gdx.app.log("angle", "" + angle);
  }
}

代码示例来源:origin: libgdx/libgdx

instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 0f), "mesh", true));
instances.add(new ModelInstance(model, new Matrix4().trn(-5f, 0f, -5f), "box", true));
instances.add(new ModelInstance(model, new Matrix4().trn(5f, 0f, -5f), "sphere", true));
instances.add(new ModelInstance(model, new Matrix4().trn(-5f, 0f, 5f), "cone", true));
instances.add(new ModelInstance(model, new Matrix4().trn(5f, 0f, 5f), "cylinder", true));
instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 5f), "capsule", true));
instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 10f), "capsuleNoTexture", true));
instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 0f), "transformedSphere", true));

代码示例来源:origin: libgdx/libgdx

BoundingBox bbox = new BoundingBox();
character.calculateBoundingBox(bbox);
character.transform.setToRotation(Vector3.Y, 180).trn(0, -bbox.min.y, 0);
instances.add(character);
animation = new AnimationController(character);

代码示例来源:origin: libgdx/libgdx

ModelInstance sphere = new ModelInstance(sphereModel);
instances.add(sphere);
sphere.transform.trn(x + 0.1f * MathUtils.random(), y + 0.1f * MathUtils.random(), z + 0.1f * MathUtils.random());
btDefaultMotionState sphereMotionState = new btDefaultMotionState();
sphereMotionState.setWorldTransform(sphere.transform);

代码示例来源:origin: konsoletyper/teavm-libgdx

public void moveShipLeft (float delta, float scale) {
  if (ship.isExploding) return;
  ship.transform.trn(-delta * Ship.SHIP_VELOCITY * scale, 0, 0);
  ship.transform.getTranslation(tmpV1);
  if (tmpV1.x < PLAYFIELD_MIN_X) ship.transform.trn(PLAYFIELD_MIN_X - tmpV1.x, 0, 0);
}

代码示例来源:origin: konsoletyper/teavm-libgdx

public void update (float delta) {
    if (isInvaderShot)
      transform.trn(0, 0, SHOT_VELOCITY * delta);
    else
      transform.trn(0, 0, -SHOT_VELOCITY * delta);

    transform.getTranslation(tmpV);
    if (tmpV.z > Simulation.PLAYFIELD_MAX_Z) hasLeftField = true;
    if (tmpV.z < Simulation.PLAYFIELD_MIN_Z) hasLeftField = true;
  }
}

代码示例来源:origin: konsoletyper/teavm-libgdx

public void moveShipRight (float delta, float scale) {
  if (ship.isExploding) return;
  ship.transform.trn(+delta * Ship.SHIP_VELOCITY * scale, 0, 0);
  ship.transform.getTranslation(tmpV1);
  if (tmpV1.x > PLAYFIELD_MAX_X) ship.transform.trn(PLAYFIELD_MAX_X - tmpV1.x, 0, 0);
}

代码示例来源:origin: konsoletyper/teavm-libgdx

public void update (float delta, float speedMultiplier) {
  movedDistance += delta * INVADER_VELOCITY * speedMultiplier;
  if (state == STATE_MOVE_LEFT) {
    transform.trn(-delta * INVADER_VELOCITY * speedMultiplier, 0, 0);
    if (movedDistance > Simulation.PLAYFIELD_MAX_X) {
      state = STATE_MOVE_DOWN;
    transform.trn(delta * INVADER_VELOCITY * speedMultiplier, 0, 0);
    if (movedDistance > Simulation.PLAYFIELD_MAX_X) {
      state = STATE_MOVE_DOWN;
    transform.trn(0, 0, delta * INVADER_VELOCITY * speedMultiplier);
    if (movedDistance > 1) {
      if (wasLastStateLeft)

代码示例来源:origin: langurmonkey/gaiasky

@Override
public void box(float x, float y, float z, float width, float height, float depth) {
  box(matTmp1.setToScaling(width, height, depth).trn(x, y, z));
}

代码示例来源:origin: stackoverflow.com

public SpriteBatch spriteBatch;
private int posX = 100;
private int posY = 100;
private float angle = 45;
private String text = "Hello, World!";
private BitmapFont font;
private Matrix4 oldTransformMatrix;
Matrix4 mx4Font = new Matrix4();

@Override
public void show() {
  font = new BitmapFont(Gdx.files.internal("someFont.ttf"));
  oldTransformMatrix = spriteBatch.getTransformMatrix().cpy();
  mx4Font.rotate(new Vector3(0, 0, 1), angle);
  mx4Font.trn(posX, posY, 0);
}

@Override
public void render() {
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  spriteBatch.setTransformMatrix(mx4Font);
  spriteBatch.begin();
  font.draw(spriteBatch, text, 0, 0);
  spriteBatch.end();
  spriteBatch.setTransformMatrix(oldTransformMatrix);
}

代码示例来源:origin: jsjolund/GdxDemo3D

localA.setFromEulerAnglesRad(0, PI0_25, 0).trn(0, halfExtMap.get(a).y, 0);
localB.setFromEulerAnglesRad(0, PI0_25, 0).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(hingeC = new btHingeConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));
hingeC.setLimit(-PI0_25, PI0_5);
localA.setFromEulerAnglesRad(0, 0, 0).trn(0, halfExtMap.get(a).y, 0);
localB.setFromEulerAnglesRad(0, 0, 0).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(fixedC = new btFixedConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));
localA.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, halfExtMap.get(a).y, 0);
localB.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));
coneC.setLimit(PI0_25, PI0_25, PI0_25);
localA.setFromEulerAnglesRad(0, PI, 0).scl(-1, 1, 1).trn(halfExtMap.get(a).x * 0.5f, -halfExtMap.get
    ("abdomen").y, 0);
localB.setFromEulerAnglesRad(0, 0, 0).scl(-1, 1, 1).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));
coneC.setLimit(PI0_25, PI0_25, PI0_25);
localA.setFromEulerAnglesRad(0, PI, 0).trn(-halfExtMap.get(a).x * 0.5f, -halfExtMap.get
    ("abdomen").y, 0);
localB.setFromEulerAnglesRad(0, 0, 0).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));
coneC.setLimit(PI0_25, PI0_25, PI0_25);
localA.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, halfExtMap.get(a).y, 0);
localB.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, -halfExtMap.get(b).y, 0);
this.constraints.add(hingeC = new btHingeConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));

相关文章