package examples.etyllica.triangulation;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.math.Vector2;
import br.com.etyllica.core.context.Application;
import br.com.etyllica.core.event.MouseEvent;
import br.com.etyllica.core.event.PointerEvent;
import br.com.etyllica.core.graphics.Graphics;
import br.com.etyllica.linear.Triangle2;
import br.com.etyllica.util.triangulation.KongTriangulation;
public class TriangulationApplication extends Application {
List<Vector2> points = new ArrayList<Vector2>();
List<Triangle2> triangles = new ArrayList<Triangle2>();
public TriangulationApplication(int w, int h) {
super(w,h);
}
@Override
public void load() {
points.add(new Vector2(100, 80));
points.add(new Vector2(120, 80));
points.add(new Vector2(140, 100));
points.add(new Vector2(160, 80));
triangles = new KongTriangulation(points).triangulate();
loading = 100;
}
@Override
public void updateMouse(PointerEvent event) {
if(event.isButtonUp(MouseEvent.MOUSE_BUTTON_LEFT)) {
points.add(new Vector2(event.getX(), event.getY()));
} else if(event.isButtonUp(MouseEvent.MOUSE_BUTTON_RIGHT)) {
triangles = new KongTriangulation(points).triangulate();
}
}
@Override
public void draw(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(this);
g.setColor(Color.BLUE);
for (Triangle2 triangle:triangles) {
g.drawLine(triangle.getA().x, triangle.getA().y, triangle.getB().x, triangle.getB().y);
g.drawLine(triangle.getA().x, triangle.getA().y, triangle.getC().x, triangle.getC().y);
g.drawLine(triangle.getB().x, triangle.getB().y, triangle.getC().x, triangle.getC().y);
}
g.setColor(Color.BLACK);
for (Vector2 point:points) {
g.fillCircle(point.x, point.y, 8);
}
}
}