Skip to content

Polygon

Introduction

Polygon shape and methods, built-in methods of phaser.

  • Author: Richard Davey

Usage

Create shape

var polygon = new Phaser.Geom.Polygon(points);
  • points :
    • An array of number : [x0, y0, x1, y1, ...]
    • An array of points : [{x:x0, y:y0}, {x:x1, y:y1}, ...]
    • A string : 'x0 y0 x1 y1 ...'

Clone shape

var polygon1 = Phaser.Geom.Polygon.Clone(polygon0);

Draw on graphics

  • Fill shape
    // graphics.fillStyle(color, alpha);   // color: 0xRRGGBB
    graphics.fillPoints(polygon.points, true);
    
  • Stroke shape
    // graphics.lineStyle(lineWidth, color, alpha);   // color: 0xRRGGBB
    graphics.strokePoints(polygon.points, true);
    

Set properties

polygon.setTo(points);
// points = [x0, y0, x1, y1, x2, y2, ...] , or [{x,y}, {x,y}, {x,y}, ...]

Get properties

  • Points
    var points = polygon.points;    // array of points {x,y}
    
  • Area
    var area = polygon.area;
    
  • Number array
    var out = Phaser.Geom.Polygon.GetNumberArray(polygon);
    // var out = Phaser.Geom.Polygon.GetNumberArray(polygon, out);  // modify out
    
    • arr : [x0, y0, x1, y1, x2, y2, ...]
  • AABB (A minimum rectangle to cover this polygon)
    var out = Phaser.Geom.Polygon.GetAABB(polygon);
    // var out = Phaser.Geom.Polygon.GetAABB(polygon, out);
    
  • Type:
    var type = polygon.type; // 4
    

Point(s) & shape

  • Point is inside shape
    var isInside = polygon.contains(x, y);
    
    or
    var isInside = Phaser.Geom.Polygon.ContainsPoint(polygon, point);
    
  • Translate : Shift points.
    Phaser.Geom.Polygon.Translate(polygon, x, y);
    
  • Reverse the order of points.
    var polygon = Phaser.Geom.Polygon.Reverse(polygon);
    
  • Smooth : Takes a Polygon object and applies Chaikin's smoothing algorithm on its points.
    Phaser.Geom.Polygon.Smooth(polygon)
    
  • Simplify : Simplifies the points by running them through a combination of Douglas-Peucker and Radial Distance algorithms. Simplification dramatically reduces the number of points in a polygon while retaining its shape, giving a huge performance boost when processing it and also reducing visual noise.
    var polygon = Phaser.Geom.Polygon.Simplify(polygon);
    // var polygon = Phaser.Geom.Polygon.Simplify(polygon, tolerance, highestQuality);
    

Vector to polygon

  • Get closest point of intersection between a vector and an array of polygons
    var result = Phaser.Geom.Intersects.GetLineToPolygon(line, polygons);
    // var out = Phaser.Geom.Intersects.GetLineToPolygon(line, polygons, isRay, out);
    
    • line : Vector of line object
    • polygons : A single polygon, or array of polygons
    • isRay : Is line a ray or a line segment?
    • out :
      • out.x, out.y : Intersection point
      • out.z : Closest intersection distance
      • out.w : Index of the polygon
  • Projects rays out from the given point to each line segment of the polygons.
    var out = Phaser.Geom.Intersects.GetRaysFromPointToPolygon(x, y, polygons);
    
    • x, y : The point to project the rays from.
    • polygons : A single polygon, or array of polygons
    • out : An array containing all intersections
      • out[i].x, out[i].y : Intersection point
      • out[i].z : Angle of intersection
      • out[i].w : Index of the polygon