當前位置: 首頁>>代碼示例>>Java>>正文


Java PolygonShape.getVertex方法代碼示例

本文整理匯總了Java中com.badlogic.gdx.physics.box2d.PolygonShape.getVertex方法的典型用法代碼示例。如果您正苦於以下問題:Java PolygonShape.getVertex方法的具體用法?Java PolygonShape.getVertex怎麽用?Java PolygonShape.getVertex使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.badlogic.gdx.physics.box2d.PolygonShape的用法示例。


在下文中一共展示了PolygonShape.getVertex方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: RenderOfPolyFixture

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
public RenderOfPolyFixture(Fixture fixture, VertexBufferObjectManager pVBO) {
	super(fixture);

	PolygonShape fixtureShape = (PolygonShape) fixture.getShape();
	int vSize = fixtureShape.getVertexCount();
	float[] xPoints = new float[vSize];
	float[] yPoints = new float[vSize];

	Vector2 vertex = Vector2Pool.obtain();
	for (int i = 0; i < fixtureShape.getVertexCount(); i++) {
		fixtureShape.getVertex(i, vertex);
		xPoints[i] = vertex.x * PhysicsConnector.PIXEL_TO_METER_RATIO_DEFAULT;
		yPoints[i] = vertex.y * PhysicsConnector.PIXEL_TO_METER_RATIO_DEFAULT;
	}
	Vector2Pool.recycle(vertex);

	mEntity = new PolyLine(0, 0, xPoints, yPoints, pVBO);
}
 
開發者ID:mediamonks,項目名稱:tilt-game-android,代碼行數:19,代碼來源:RenderOfPolyFixture.java

示例2: getFixtureVertices

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
/**
 * Getter for the Vertices of a given Fixture.
 *
 * @param fixture Fixture to be handled.
 * @return List containing the Fixture's vertices.
 */
private List<Vector2> getFixtureVertices(Fixture fixture) {
    PolygonShape polygon = (PolygonShape) fixture.getShape();
    int verticesCount = polygon.getVertexCount();

    List<Vector2> vertices = new ArrayList<>(verticesCount);
    for (int i = 0; i < verticesCount; i++) {
        Vector2 vertex = new Vector2();
        polygon.getVertex(i, vertex);
        vertices.add(new Vector2(fixture.getBody().getWorldPoint(vertex)));
    }

    return vertices;
}
 
開發者ID:AndreFCruz,項目名稱:feup-lpoo-armadillo,代碼行數:20,代碼來源:BuoyancyController.java

示例3: getFixtureVertices

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
private List<Vector2> getFixtureVertices(Fixture fixture) {
	PolygonShape polygon = (PolygonShape) fixture.getShape();
	int verticesCount = polygon.getVertexCount();

	List<Vector2> vertices = new ArrayList<Vector2>(verticesCount);
	for (int i = 0; i < verticesCount; i++) {
		Vector2 vertex = new Vector2();
		polygon.getVertex(i, vertex);
		vertices.add(new Vector2(fixture.getBody().getWorldPoint(vertex)));
	}

	return vertices;
}
 
開發者ID:Leakedbits,項目名稱:Codelabs,代碼行數:14,代碼來源:BuoyancyController.java

示例4: resize

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
/**
 * Change the size of an actor, and/or change its position
 *
 * @param x      The new X coordinate of its bottom left corner, in meters
 * @param y      The new Y coordinate of its bototm left corner, in meters
 * @param width  The new width of the actor, in meters
 * @param height The new height of the actor, in meters
 */
public void resize(float x, float y, float width, float height) {
    // set new height and width
    mSize.set(width, height);
    // read old body information
    Body oldBody = mBody;
    Fixture oldFix = oldBody.getFixtureList().get(0);
    // make a new body
    if (mIsCircleBody) {
        setCirclePhysics(oldBody.getType(), x, y, (width > height) ? width / 2 : height / 2);
    } else if (mIsBoxBody) {
        setBoxPhysics(oldBody.getType(), x, y);
    } else if (mIsPolygonBody) {
        // we need to manually scale all the vertices
        float xScale = height / mSize.y;
        float yScale = width / mSize.x;
        PolygonShape ps = (PolygonShape) oldFix.getShape();
        float[] verts = new float[ps.getVertexCount() * 2];
        for (int i = 0; i < ps.getVertexCount(); ++i) {
            ps.getVertex(i, mTempVector);
            verts[2 * i] = mTempVector.x * xScale;
            verts[2 * i + 1] = mTempVector.y * yScale;
        }
        setPolygonPhysics(oldBody.getType(), x, y, verts);
    }
    // Update the user-visible physics values
    setPhysics(oldFix.getDensity(), oldFix.getRestitution(), oldFix.getFriction());
    setFastMoving(oldBody.isBullet());
    // clone forces
    mBody.setAngularVelocity(oldBody.getAngularVelocity());
    mBody.setTransform(mBody.getPosition(), oldBody.getAngle());
    mBody.setGravityScale(oldBody.getGravityScale());
    mBody.setLinearDamping(oldBody.getLinearDamping());
    mBody.setLinearVelocity(oldBody.getLinearVelocity());
    // disable the old body
    oldBody.setActive(false);
}
 
開發者ID:mfs409,項目名稱:liblol,代碼行數:45,代碼來源:BaseActor.java

示例5: renderTiles

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
/**
 * Uses the shape renderer to draw all tiles in the List
 *
 * @param tiles the {@link List} of tiles to render
 */
public void renderTiles(List<Body> tiles) {
	shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
	shapeRenderer.setColor(Color.DARK_GRAY);

	// Setup some reusable Vector2s
	Vector2[] verts = new Vector2[4];
	for (int i = 0; i < verts.length; i++)
		verts[i] = new Vector2();
	Vector2 lv = new Vector2();
	Vector2 f = new Vector2();

	for (Body tile : tiles) {
		PolygonShape tileShape = (PolygonShape) tile.getFixtureList().get(0).getShape();

		// Get the vertices for the shape.
		for (int i = 0; i < verts.length; i++) {
			tileShape.getVertex(i, verts[i]);
			tile.getTransform().mul(verts[i]);
		}

		// Set the starting vertices to draw the lines from
		lv.set(verts[0]);
		f.set(verts[0]);

		// For each of the vertices draw a line connecting it to the previous
		for (int i = 1; i < verts.length; i++) {
			Vector2 v = verts[i];
			shapeRenderer.line(lv.x, lv.y, v.x, v.y);
			lv.set(v);
		}
		// Finally draw the last line, connecting back to the first vertex
		shapeRenderer.line(f.x, f.y, lv.x, lv.y);
	}
	shapeRenderer.end();
}
 
開發者ID:zdonnell,項目名稱:Android-Genetic-Cars,代碼行數:41,代碼來源:Renderer.java

示例6: generate

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
/**
 * Generates terrain in the provided world.
 *
 * @param world the world to place the terrain in
 * @return a list of all the terrain tiles generated
 */
public static List<Body> generate(World world) {
	List<Body> terrainTiles = new ArrayList<Body>(MAX_GROUND_PIECES);
	Body lastTile;
	Vector2 tilePosition = new Vector2(-5, -2);
	for (int i = 0; i < MAX_GROUND_PIECES; i++) {
		// Create a tile, it's rotation potentially more extreme the closer to the end of the terrain we get.
		lastTile = createTerrainTile(world, tilePosition, (Math.random() * 3 - 1.5) * 1.5 * i / MAX_GROUND_PIECES);
		terrainTiles.add(lastTile);
		PolygonShape lastTileShape = (PolygonShape) lastTile.getFixtureList().get(0).getShape();
		lastTileShape.getVertex(3, tilePosition);
		tilePosition = lastTile.getWorldPoint(tilePosition);
	}
	return terrainTiles;
}
 
開發者ID:zdonnell,項目名稱:Android-Genetic-Cars,代碼行數:21,代碼來源:TerrainGenerator.java

示例7: ComputeCentroid

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
static float ComputeCentroid(PolygonShape shape, Vector2 c)
{
   float area = 0.0f;
   c.set(0,0);

   // pRef is the reference point for forming triangles.
   // It's location doesn't change the result (except for rounding error).
   pRef.set(0,0);

   float inv3 = 1.0f / 3.0f;
   
   int count = shape.getVertexCount();
   
   if (count < 3) throw new IndexOutOfBoundsException("Bad vertex count!");

   for (int i = 0; i < count; ++i)
   {
      // Triangle vertices.
      Vector2 p1 = pRef;
      Vector2 p2 = tmp; 
      shape.getVertex(i, p2); // vs[i];
      Vector2 p3 = tmp2;
      shape.getVertex(i + 1 < count ? i+1 : 0,p3); // vs[i+1] : vs[0];

      e1.set(p2).sub(p1); // e1 = p2 - p1;
      e2.set(p3).sub(p1); // e2 = p3 - p1;

      float D = e1.crs(e2);

      float triangleArea = 0.5f * D;
      area += triangleArea;

      // Area weighted centroid
      tmp.set(p1).add(p2).add(p3).scl(triangleArea * inv3);
      c.add(tmp);

   }

   if (area < Float.MIN_VALUE)
   {
      area = 0.25f; // punt.  Instead of throwing an exception, return a minimum.
   }
   // Centroid
   c.scl(1.0f / area);
   
   return area;
}
 
開發者ID:tescott,項目名稱:box2dcontrollers,代碼行數:48,代碼來源:B2ShapeExtensions.java

示例8: ComputeCentroid

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
static float ComputeCentroid(PolygonShape shape, Vector2 c)
{
    float area = 0.0f;
    c.set(0,0);

    // pRef is the reference point for forming triangles.
    // It's location doesn't change the result (except for rounding error).
    pRef.set(0,0);

    float inv3 = 1.0f / 3.0f;

    int count = shape.getVertexCount();

    if (count < 3) throw new IndexOutOfBoundsException("Bad vertex count!");

    for (int i = 0; i < count; ++i)
    {
        // Triangle vertices.
        Vector2 p1 = pRef;
        Vector2 p2 = tmp;
        shape.getVertex(i, p2); // vs[i];
        Vector2 p3 = tmp2;
        shape.getVertex(i + 1 < count ? i+1 : 0,p3); // vs[i+1] : vs[0];

        e1.set(p2).sub(p1); // e1 = p2 - p1;
        e2.set(p3).sub(p1); // e2 = p3 - p1;

        float D = e1.crs(e2);

        float triangleArea = 0.5f * D;
        area += triangleArea;

        // Area weighted centroid
        tmp.set(p1).add(p2).add(p3).scl(triangleArea * inv3);
        c.add(tmp);

    }

    if (area < Float.MIN_VALUE)
    {
        area = 0.25f; // punt.  Instead of throwing an exception, return a minimum.
    }
    // Centroid
    c.scl(1.0f / area);

    return area;
}
 
開發者ID:Rubentxu,項目名稱:DreamsLibGdx,代碼行數:48,代碼來源:BuoyancyUtils.java

示例9: renderCars

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入方法依賴的package包/類
/**
 * Draws all the cars in the List provided.
 *
 * @param cars {@link List} of cars
 */
public void renderCars(List<Car> cars) {
	for (Car car : cars) {

		// Calculate an alpha value that represents how much longer the car has before it is killed.
		float lifeLeft = (float) (System.currentTimeMillis() - car.timeLastMoved) / 5000f;
		float alpha = lifeLeft / 1f;

		// draw wheels
		for (Body wheel : car.getWheels()) {
			Vector2 pos = wheel.getPosition();

			// Figure out the color of the wheel based on it's density
			float wheelDensityRange = Wheel.WHEEL_MAX_DENSITY - Wheel.WHEEL_MIN_DENSITY;
			float densityRatio = (wheel.getMass() - Wheel.WHEEL_MIN_DENSITY) / wheelDensityRange;
			densityRatio = 1f - densityRatio;

			// Draw the solid wheel color
			shapeRenderer.begin(ShapeRenderer.ShapeType.FilledCircle);
			shapeRenderer.setColor(densityRatio, densityRatio, densityRatio, 1f - alpha);
			shapeRenderer.filledCircle(pos.x, pos.y, wheel.getFixtureList().get(0).getShape().getRadius(), 30);
			shapeRenderer.end();

			// Draw the wheel outline
			shapeRenderer.begin(ShapeRenderer.ShapeType.Circle);
			shapeRenderer.setColor(0, 0, 0, 1f - alpha);
			shapeRenderer.circle(pos.x, pos.y, wheel.getFixtureList().get(0).getShape().getRadius(), 30);
			shapeRenderer.end();
		}

		// Draw the chassis pieces (triangles)
		Vector2[] v = new Vector2[3];
		for (Fixture chassisPart : car.getChassis().getFixtureList()) {
			PolygonShape chassisPieceShape = (PolygonShape) chassisPart.getShape();

			// Get the vertices for this chassis piece (triangle)
			for (int i = 0; i < 3; i++) {
				v[i] = new Vector2();
				chassisPieceShape.getVertex(i, v[i]);
				car.getChassis().getTransform().mul(v[i]);
			}

			// Draw the light red solid color
			shapeRenderer.begin(ShapeRenderer.ShapeType.FilledTriangle);
			shapeRenderer.setColor(car.isElite ? 0.6f : 0.9f, 0.6f, car.isElite ? 0.9f : 0.6f, 1f - alpha);
			shapeRenderer.filledTriangle(v[0].x, v[0].y, v[1].x, v[1].y, v[2].x, v[2].y);
			shapeRenderer.end();

			// Draw the darker red triangle outlines
			shapeRenderer.begin(ShapeRenderer.ShapeType.Triangle);
			shapeRenderer.setColor(car.isElite ? 0.1f : 0.9f, 0.1f, car.isElite ? 0.9f : 0.1f, 1f - alpha);
			shapeRenderer.triangle(v[0].x, v[0].y, v[1].x, v[1].y, v[2].x, v[2].y);
			shapeRenderer.end();
		}
	}
}
 
開發者ID:zdonnell,項目名稱:Android-Genetic-Cars,代碼行數:61,代碼來源:Renderer.java


注:本文中的com.badlogic.gdx.physics.box2d.PolygonShape.getVertex方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。