added MinimumTranslationVectorTest
M core/src/net/dermetfan/someLibgdxTests/screens/Menu.java +1 -0
@@ 153,6 153,7 @@ public class Menu extends ScreenAdapter 
 		names.add("IntersectSegmentConvexPolygonTest");
 		names.add("DragAndDropTutorial");
 		names.add("Box2DControllerTest");
+		names.add("MinimumTranslationVectorTest");
 		names.sort();
 
 		final List<String> tests = new List<>(skin);

          
A => core/src/net/dermetfan/someLibgdxTests/screens/MinimumTranslationVectorTest.java +81 -0
@@ 0,0 1,81 @@ 
+package net.dermetfan.someLibgdxTests.screens;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.InputAdapter;
+import com.badlogic.gdx.ScreenAdapter;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.OrthographicCamera;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
+import com.badlogic.gdx.math.GeometryUtils;
+import com.badlogic.gdx.math.Intersector;
+import com.badlogic.gdx.math.Intersector.MinimumTranslationVector;
+import com.badlogic.gdx.math.Polygon;
+import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.scenes.scene2d.utils.UIUtils;
+import com.badlogic.gdx.utils.viewport.ScreenViewport;
+import com.badlogic.gdx.utils.viewport.Viewport;
+
+public class MinimumTranslationVectorTest extends ScreenAdapter {
+
+	private Viewport viewport = new ScreenViewport();
+	private ShapeRenderer sr = new ShapeRenderer();
+	private Polygon polygon = new Polygon(new float[] {0, 0, 250, 0, 250, 250, 0, 500}), polygon2 = new Polygon(new float[] {0, 0, 250, 0, 250, 500, 0, 250});
+	private MinimumTranslationVector mtv = new MinimumTranslationVector();
+	private Vector2 centroid = new Vector2();
+
+	@Override
+	public void show() {
+		Gdx.input.setInputProcessor(new InputAdapter() {
+			@Override
+			public boolean scrolled(int amount) {
+				((OrthographicCamera) viewport.getCamera()).zoom += amount / 25f;
+				viewport.apply();
+				return true;
+			}
+
+			@Override
+			public boolean touchDragged(int screenX, int screenY, int pointer) {
+				if(UIUtils.right()) {
+					OrthographicCamera cam = (OrthographicCamera) viewport.getCamera();
+					cam.position.add(-Gdx.input.getDeltaX(pointer) * cam.zoom, Gdx.input.getDeltaY(pointer) * cam.zoom, 0);
+					viewport.apply();
+				} else {
+					viewport.unproject(centroid.set(screenX, screenY));
+					polygon.setPosition(centroid.x, centroid.y);
+				}
+				return true;
+			}
+		});
+	}
+
+	@Override
+	public void resize(int width, int height) {
+		viewport.update(width, height, true);
+	}
+
+	@Override
+	public void render(float delta) {
+		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
+
+		sr.setProjectionMatrix(viewport.getCamera().combined);
+		sr.begin(ShapeType.Line);
+		sr.setColor(Color.WHITE);
+		sr.polygon(polygon.getTransformedVertices());
+		if(Intersector.overlapConvexPolygons(polygon, polygon2, mtv)) {
+			sr.setColor(Color.RED);
+			GeometryUtils.polygonCentroid(polygon.getTransformedVertices(), 0, polygon.getTransformedVertices().length, centroid);
+			sr.line(centroid.x, centroid.y, centroid.x + mtv.normal.x * mtv.depth, centroid.y + mtv.normal.y * mtv.depth);
+		}
+		sr.setColor(Color.CYAN);
+		sr.polygon(polygon2.getTransformedVertices());
+		sr.end();
+	}
+
+	@Override
+	public void dispose() {
+		sr.dispose();
+	}
+
+}