package org.codecranachan.asteroidpush.base.simulation;
import java.util.Vector;
import org.codecranachan.asteroidpush.utils.Circle;
import org.jbox2d.common.MathUtils;
import org.jbox2d.common.Vec2;
public class Primitive {
private Vector<Vec2> vertices;
public Primitive() {
vertices = new Vector<Vec2>();
}
public void AddVertex(Vec2 vertex) {
assert (vertex != null);
vertices.add(vertex);
}
public void AddCircle(Circle geometry, int points) {
for (int i = 0; i < points; ++i) {
float angle = MathUtils.TWOPI * i / points;
Vec2 vertice = new Vec2(MathUtils.cos(angle) * geometry.getRadius(),
MathUtils.sin(angle) * geometry.getRadius());
vertice.addLocal(geometry.getCenter());
vertices.add(vertice);
}
}
public void AddSquare(Vec2 center, float a) {
float d = a / 2f;
vertices.add(new Vec2(center.x + d, center.y + d));
vertices.add(new Vec2(center.x - d, center.y + d));
vertices.add(new Vec2(center.x - d, center.y - d));
vertices.add(new Vec2(center.x + d, center.y - d));
}
public Vector<Vec2> getVertices() {
return vertices;
}
public Primitive scale(float factor) {
Primitive scaled = new Primitive();
for (Vec2 vertex : vertices) {
scaled.AddVertex(vertex.mul(factor));
}
return scaled;
}
}