Line
Introduction¶
Line shape and methods, built-in methods of phaser.
- Author: Richard Davey
Usage¶
Create shape¶
var line = new Phaser.Geom.Line(x1, y1, x2, y2);
Clone shape¶
var line1 = Phaser.Geom.Line.Clone(line0);
Draw on graphics¶
// graphics.lineStyle(lineWidth, color, alpha); // color: 0xRRGGBB
graphics.strokeLineShape(line);
Set properties¶
- All properties
or
line.setTo(x1, y1, x2, y2);
Phaser.Geom.Line.CopyFrom(source, dest);
- Position
or
line.x1 = 0; line.y1 = 0; line.x2 = 0; line.y2 = 0;
line.left = 0; // min(x1, x2) line.top = 0; // min(y1, y2) line.right = 0; // max(x1, x2) line.bottom = 0; // max(y1, y2)
- Offset start, end
var line = Phaser.Geom.Line.Offset(line, dx, dy); // line.x1 += dx, line.y1 += dy, line.x2 += dx, line.y2 += dy
- Set center position
var line = Phaser.Geom.Line.CenterOn(line, x, y);
- Offset start, end
- Start point, angle, length
var line = Phaser.Geom.Line.SetToAngle(line, x, y, angle, length);
line
: The line to setx
,y
: start pointangle
: The angle of the line in radiansvar rad = Phaser.Math.DegToRad(deg);
length
: The length of the line
- Rotate
- Rotate around midpoint
var line = Phaser.Geom.Line.Rotate(line, angle)
line
: The line to setangle
: The angle of the line in radiansvar rad = Phaser.Math.DegToRad(deg);
- Rotate around point
or
var line = Phaser.Geom.Line.RotateAroundPoint(line, point, angle);
var line = Phaser.Geom.Line.RotateAroundXY(line, x, y, angle);
line
: The line to setangle
: The angle of the line in radiansvar rad = Phaser.Math.DegToRad(deg);
- Rotate around midpoint
- Extend
var line = Phaser.Geom.Line.Extend(line, left, right);
Get properties¶
- Position
var x1 = line.x1; var y1 = line.y1; var x2 = line.x2; var y2 = line.y2; var top = line.top; // min(x1, x2) var left = line.left; // min(y1, y2) var right = line.right; // max(x1, x2) var bottom = line.bottom; // max(y1, y2)
- Start point
var start = line.getPointA(); // start: {x, y} var start = line.getPointA(start); // push start
- End point
var end = line.getPointB(); // end: {x, y} var end = line.getPointB(end); // push end
- Middle point
var middle = Phaser.Geom.Line.GetMidPoint(line); // middle: {x, y} // var middle = Phaser.Geom.Line.GetMidPoint(line, middle);
- Start point
- Length
var length = Phaser.Geom.Line.Length(line);
- Width : Abs(x1 - x2)
var width = Phaser.Geom.Line.Width(line);
- Height : Abs(y1 - y2)
var width = Phaser.Geom.Line.Height(line);
- Width : Abs(x1 - x2)
- Slope
- Slope : (y2 - y1) / (x2 - x1)
var slope = Phaser.Geom.Line.Slope(line);
- Perpendicular slope : -((x2 - x1) / (y2 - y1))
var perpSlope = Phaser.Geom.Line.PerpSlope(line);
- Slope : (y2 - y1) / (x2 - x1)
- Angle
- Angle
var angle = Phaser.Geom.Line.Angle(line);
angle
: The angle of the line in radiansvar deg = Phaser.Math.RadToDeg(rad); // deg : -180 ~ 180
- Normal angle (angle - 90 degrees)
- Normal angle
var normalAngle = Phaser.Geom.Line.NormalAngle(line);
- Normal vector
or
var normal = Phaser.Geom.Line.GetNormal(line); // normal: {x, y} // var normal = Phaser.Geom.Line.GetNormal(line, normal); // push normal
var normalX = Phaser.Geom.Line.NormalX(line); var normalY = Phaser.Geom.Line.NormalY(line);
- Normal angle
- Reflect angle
var reflectAngle = Phaser.Geom.Line.ReflectAngle(aimLine, reflectingLine);
- Angle
- Type:
var type = line.type; // 2
Point(s) & shape¶
- Get point at shape's edge
var point = line.getPoint(t); // t : 0 ~ 1. 0=start, 0.5=middle, 1=end // var point = line.getPoint(t, point); // modify point
- Get a random point inside shape
var point = line.getRandomPoint(); // var point = line.getRandomPoint(point); // modify point
- Get points around shape's edge
or calculate quantity from steps
var points = line.getPoints(quantity); // var points = line.getPoints(quantity, null, points); // push points
var points = line.getPoints(false, step); // var points = line.getPoints(false, step, points); // push points
points
: an array of point
- Get points using Bresenham's line algorithm
var points = Phaser.Geom.Line.BresenhamPoints(line, step); // var points = Phaser.Geom.Line.BresenhamPoints(line, step, points); // push points
- Get points using easing function
var points = Phaser.Geom.Line.GetEasedPoints(line, ease, quantity); // var points = Phaser.Geom.Line.GetEasedPoints(line, ease, quantity, collinearThreshold, easeParams);
ease
: String of ease function, or a custom function (function (t) { return value}
).quantity
: The number of points to return.collinearThreshold
: Each point is spaced out at least this distance apart. This helps reduce clustering in noisey eases.easeParams
: Array of ease parameters to go with the ease.
- Get the nearest point on a line perpendicular to the given point.
var point = Phaser.Geom.Line.GetNearestPoint(line, pointIn); // var point = Phaser.Geom.Line.GetNearestPoint(line, pointIn, point);
- Get the shortest distance from a Line to the given Point.
var distance = Phaser.Geom.Line.GetShortestDistance(line, point);
Equal¶
var isEqual = Phaser.Geom.Line.Equals(line0, line1);
x1, y2, x2, y2 are equal.
Intersection¶
Line to circle¶
- Is intersection
var result = Phaser.Geom.Intersects.LineToCircle(line, circle); // var result = Phaser.Geom.Intersects.LineToCircle(line, circle, nearest);
nearest
: Nearest point on line.
- Get intersection points
var result = Phaser.Geom.Intersects.GetLineToCircle(line, circle); // var out = Phaser.Geom.Intersects.GetLineToCircle(line, circle, out);
Line to rectangle¶
- Is intersection
var result = Phaser.Geom.Intersects.LineToRectangle(line, rect);
- Get intersection points
var result = Phaser.Geom.Intersects.GetLineToRectangle(line, rect); // var out = Phaser.Geom.Intersects.GetLineToRectangle(line, rect, out);
Line to triangle¶
- Is intersection
var result = Phaser.Geom.Intersects.TriangleToLine(triangle, line);
- Get intersection points
var result = Phaser.Geom.Intersects.GetTriangleToLine(triangle, line); // var out = Phaser.Geom.Intersects.GetTriangleToLine(triangle, line, out);
Line to line¶
- Is intersection
var isIntersection = Phaser.Geom.Intersects.LineToLine(line1, line2);
isIntersection
: Returntrue
if line1 and line2 are intersectioned
- Get intersection point
var isIntersection = Phaser.Geom.Intersects.LineToLine(line1, line2, out);
isIntersection
: Returntrue
if line1 and line2 are intersectionedout
: intersected point