Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import toxi.geom.*;
- import toxi.processing.*;
- Polygon2D ship, asteroid;
- ToxiclibsSupport tls;
- void setup() {
- size(1300, 700);
- tls = new ToxiclibsSupport(this);
- ship = new Polygon2D();
- float size = 10;
- ship.add(0, -size);
- ship.add(size, size);
- ship.add(0, size*0.5);
- ship.add(-size, size);
- ship.translate(width/2, height/2);
- asteroid = generateAsteroid();
- }
- void draw() {
- background(0);
- Vec2D mouse = new Vec2D(mouseX, mouseY);
- asteroid.center(mouse);
- if (ship.intersectsPolygon(asteroid)) {
- fill(255, 0, 0);
- } else {
- noFill();
- }
- stroke(255);
- strokeJoin(ROUND);
- tls.polygon2D(ship);
- tls.polygon2D(asteroid);
- }
- Polygon2D generateAsteroid() {
- Polygon2D poly = new Polygon2D();
- int pts = floor(random(5, 15));
- for (int i = 0; i < pts; i++) {
- float angle = TWO_PI / (float)pts * i;
- poly.add(Vec2D.fromTheta(angle).scaleSelf(random(40, 100)));
- }
- poly.scale(random(0.5, 1.2));
- return poly;
- }
- void mousePressed() {
- asteroid = generateAsteroid();
- }
- static class Asteroid {
- static ArrayList<Asteroid> asteroidList = new ArrayList<Asteroid>();
- Polygon2D shape;
- PApplet parent;
- public Asteroid(PApplet parent) {
- this.parent = parent;
- shape = generateAsteroid();
- asteroidList.add(this);
- }
- public Polygon2D generateAsteroid() {
- Polygon2D poly = new Polygon2D();
- int pts = floor(parent.random(5, 15));
- for (int i = 0; i < pts; i++) {
- float angle = TWO_PI / (float)pts * i;
- poly.add(Vec2D.fromTheta(angle).scaleSelf(parent.random(40, 100)));
- }
- poly.scale(parent.random(0.5, 1.2));
- return poly;
- }
- public void destroy() {
- asteroidList.remove(this);
- }
- }
- class Ship {
- Polygon2D shape;
- Ship() {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement