public static M_Polygon GetCircleClosed(Vector2 pos, float radius, int vertices) { M_Polygon poly = GetCircleOpen(pos, radius, vertices - 1); poly.vertices.Add(poly.vertices[0]); return(poly); }
public override CollisionResult DistToPolygon(M_Polygon polygon, Vector2 dir) { //if (Input.rightShift.down) // return Collision.DistPolygonPolygon2(this, polygon, dir); //else return(Collision.DistPolygonPolygon(this, polygon, dir)); }
public override Mask Clone() { M_Polygon clone = (M_Polygon)this.MemberwiseClone(); clone.vertices = vertices.ToList(); return(clone); }
public override CollisionResult DistToPolygon(M_Polygon polygon) { return(new CollisionResult() { collision = masks.Any(f => f.ColPolygon(polygon)) }); //return MaxCol(f => f.DistToPolygon(polygon)); }
public static M_Polygon GetCircleOpen(Vector2 pos, float radius, int vertices) { M_Polygon poly = new M_Polygon(pos, new List <Vector2>()); for (int i = 0; i < vertices; i++) { float a = i * MathHelper.TwoPi / vertices; poly.vertices.Add(new Vector2((float)Math.Cos(a) * radius, (float)Math.Sin(a) * radius)); } return(poly); }
public static M_Polygon GetRandomConvex(Vector2 pos, Random rand, float radius, float angleMin, float angleRange) { M_Polygon poly = new M_Polygon(pos, new List <Vector2>()); float startAngle = (float)rand.NextDouble() * MathHelper.TwoPi; for (float a = 0f; a < MathHelper.TwoPi;) // full circle { poly.vertices.Add(new Vector2((float)Math.Cos(startAngle + a) * radius, (float)Math.Sin(startAngle + a) * radius)); a += (float)((angleMin + (angleRange * rand.NextDouble())) * Math.PI / 180f); } return(poly); }
public static M_Polygon GetCirclePart(Vector2 pos, float radius, float angle, float fov, int vertices) { M_Polygon poly = new M_Polygon(pos, new List <Vector2>() { Vector2.Zero }); float a = angle - fov / 2f; float plus = fov / (vertices - 1); for (int i = 0; i < vertices; i++) { poly.vertices.Add(new Vector2((float)Math.Cos(a) * radius, (float)Math.Sin(a) * radius)); a += plus; } return(poly); }
public abstract CollisionResult DistToPolygon(M_Polygon polygon, Vector2 dir);
public override CollisionResult DistToPolygon(M_Polygon polygon, Vector2 dir) { return(MinCol(f => f.DistToPolygon(polygon, dir))); }
public override bool ColPolygon(M_Polygon polygon) { return(masks.Any(f => f.ColPolygon(polygon))); }
public override CollisionResult DistToPolygon(M_Polygon polygon) { return(Collision.DistPolygonCircle(polygon, this).GetAxisInvert()); }
public override bool ColPolygon(M_Polygon polygon) { return(Collision.ColPolygonCircle(polygon, this)); }
public override CollisionResult DistToPolygon(M_Polygon polygon) { throw new NotImplementedException(); }
public override CollisionResult DistToPolygon(M_Polygon polygon) { return(Collision.DistVectorPolygon(pos, polygon)); }
public override bool ColPolygon(M_Polygon polygon) { return(Collision.ColVectorPolygon(pos, polygon)); }
public abstract CollisionResult DistToPolygon(M_Polygon polygon);
public abstract bool ColPolygon(M_Polygon polygon);
public override CollisionResult DistToPolygon(M_Polygon polygon) { return(Collision.DistPolygonPolygon(this, polygon)); }
public override bool ColPolygon(M_Polygon polygon) { return(Collision.ColPolygonPolygon(this, polygon)); }