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 normalvar 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 pointsvar points = line.getPoints(false, step); // var points = line.getPoints(false, step, points); // push pointspoints: 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: Returntrueif line1 and line2 are intersectioned
- Get intersection point
var isIntersection = Phaser.Geom.Intersects.LineToLine(line1, line2, out);isIntersection: Returntrueif line1 and line2 are intersectionedout: intersected point