Returns an object that contains all the methods that can be used for operations that require mathematical calculations.
 Properties
Properties
.getTValue
Get t Value for segments based on a point on segment.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}],
    point;
t_value = Vecta.math.getTValue(pathlist, {x: 5, y: 5}); //Get the t value on pathList
console.log(t_value) //0.5 Methods
Methods
.angle(x, y, cx, cy) Returns: number
Calculate the angle of given a point from a center point.
| Name | Type | Description | 
|---|---|---|
| x | number | X coordinate | 
| y | number | Y coordinate | 
| cx | number | X coordinate of the center point | 
| cy | number | Y coordinate of the center point | 
Returns:
Returns the angle in degrees.
Examples:
var point = {x: 20, y:20},
    cx = 10,
    cy = 10,
    angle;
angle = Vecta.math.angle(point.x, point.y, cx, cy); //get the degree of (20, 20) from center (10, 10)
console.log(angle); //135.distance(x1, y1, x2, y2) Returns: number
Calculate the distance between 2 points
| Name | Type | Description | 
|---|---|---|
| x1 | number | The x coordinate of the first point | 
| y1 | number | The y coordinate of the first point | 
| x2 | number | The x coordinate of the second point | 
| y2 | number | The y coordinate of the second point | 
Returns:
Returns the distance between the two coordinates.
Examples:
var distance = Vecta.math.distance(10, 20, 50, 40);
console.log(distance); //44.721359549995796.getPoint(list, t) Returns: Point
Get a point on a segment based on t value.
| Name | Type | Description | 
|---|---|---|
| list | PathList | The path segment list to get a point from | 
| t | number | The T value | 
Returns:
Returns the resulting point.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}],
    point;
point = Vecta.math.getPoint(pathlist, 0.5); //Get the point on pathList with a T value of 0.5
console.log(points) //{x: 5, y: 5}.intersect(s1, s2) Returns: Intersect
Determines if 2 segments intersect.
| Name | Type | Description | 
|---|---|---|
| s1 | PathList[] | Segment array in the form  | 
| s2 | PathList[] | Segment array in the form  | 
Returns:
Returns an intersection object.
Examples:
var path_1 = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}],
    path_2 = [{type: 'M', x: 20, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 0, y: 20}],
    intersect;
intersect = Vecta.math.intersect(path_1, path_2);
console.log(intersect); //{pts: [{x: 10, y: 10}], [[1], [1]]}.isPointInShape(x, y, shape) Returns: boolean
Check if a point is inside a shape. The left top is the coordinate origin.
| Name | Type | Description | 
|---|---|---|
| x | number | The x coordinate of the point | 
| y | number | The y coordinate of the point | 
| shape | Vecta.Shape | The shape to check | 
Returns:
Returns true if point is inside path, false otherwise.
Examples:
Vecta.math.isPointInShape(10, 20, shape); //Checks whether the point (10, 20) is in the shape.isPointOnPath(x, y, list, [tolerance]) Returns: boolean
Check if a point is on top of a path.
| Name | Type | Attributes | Description | 
|---|---|---|---|
| x | number | The x coordinate to check. | |
| y | number | The y coordinate to check. | |
| list | PathList[] | The path segment list to check. | |
| tolerance | number | optional | Tolerance to accept the point is on the path, default to 0.01px | 
Returns:
Returns true if point is on top of the path, false otherwise.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}],
    point = {x: 20, y:20},
    pointOnPath;
//determine whether the point is in the path
pointOnPath = Vecta.math.isPointOnPath(point.x, point.y, pathlist);
console.log(pointOnPath); //true.normalizeAngle(angle) Returns: number
Normalize angle to within 0 - 360 degrees.
| Name | Type | Description | 
|---|---|---|
| angle | number | The angle to normalize | 
Returns:
Returns the normalized angle in degrees.
Examples:
var normalizedAngle;
//normalize the angle 450 degrees to within 0 - 360 degrees
normalizedAngle = Vecta.math.normalizedAngle(450);
console.log(normalizedAngle); //90.offsetPathList(list, x, y) Returns: PathList[]
Offset a path.
| Name | Type | Description | 
|---|---|---|
| list | PathList[] | The path segment list to offset | 
| x | number | The x offset | 
| y | number | The y offset | 
Returns:
Returns the changed path segment list.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}];
//offset the pathlist by x = 10 and y = 10
Vecta.math.offsetPathList(pathlist, 10, 10);.pointInPath(x, y, list) Returns: boolean
Check if a point is inside a path.
| Name | Type | Description | 
|---|---|---|
| x | number | The x coordinate to check | 
| y | number | The y coordinate to check | 
| list | PathList[] | The path segment list to check | 
Returns:
Returns true if point is inside path, false otherwise.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}],
    point = {x: 20, y:20},
    pointInPath;
//determine whether the point is in the path
pointInPath = Vecta.math.pointInPath(point.x, point.y, pathlist);
console.log(pointInPath); //true.rotatePathList(list, cx, cy, angle) Returns: PathList[]
Rotate a list of segments.
| Name | Type | Description | 
|---|---|---|
| list | PathList[] | The path segment list to rotate | 
| cx | number | The x coordinate of center of rotation | 
| cy | number | The y coordinate of center of rotation | 
| angle | number | The angle to rotate in degrees | 
Returns:
Returns the rotated list.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}];
//rotate the pathlist with the center (10, 10) at 90 degree angle
Vecta.math.rotatePathList(pathlist, 10, 10, 90);.rotatePoint(x, y, cx, cy, angle) Returns: Point
Rotate a point at a given angle and center.
The left top is the coordinate origin, and angles are always clockwise.
| Name | Type | Description | 
|---|---|---|
| x | number | The x coordinate of point to be rotation | 
| y | number | The y coordinate of point to be rotation | 
| cx | number | The center x coordinate of the rotation | 
| cy | number | The center y coordinate of the rotation | 
| angle | number | The angle that should be rotated | 
Returns:
Returns the resulting point after rotation.
Examples:
//rotate a point starting at coordinate (10, 20) with the center (15, 15) at a 90 degree angle
var point = Vecta.math.rotatePoint(10, 20, 15, 15, 90);
console.log(point); //{x: 10, y: 10}.segmentize(list) Returns: PathList[][]
Split a path segment list into individual segments.
Although a path segment list contains a list of segments, most times, these segments may refer to the previous segment as a starting point for the next segment. For example:
[{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}]
The segmentize method split all these segments into individual segment preceded by a 'M' type, as below:
[[{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}], [{type: 'M', x: 10, y: 10}, {type: 'L', x: 20, y: 20}]]
| Name | Type | Description | 
|---|---|---|
| list | PathList[] | The path segment list to split | 
Returns:
Returns an array of path segment list array, essentially a 2 dimensional array.
Examples:
var pathlist = [{type: 'M', x: 0, y: 0}, {type: 'L', x: 10, y: 10}, {type: 'L', x: 20, y: 20}];
Vecta.math.segmentize(pathlist); //split a path segment list into individual segments.splitSegment(seg, t) Returns: PathList[][]
Split path segments using a T value. Can split both line, quad and cubic curves.
| Name | Type | Description | 
|---|---|---|
| seg | PathList[] | The path segment list to split | 
| t | number | The T value to split | 
Returns:
Returns an array containing split path segment list.
Examples:
var curve = [{type: "M", x: 0, y: 175}, {type: "Q", x1: 0, y1: 0, x: 135, y: 0}],
    split;
split = Vecta.math.splitSegment(curve, 1/3); //Split the curve seg by a T value of 1/3
console.log(split); //an array of split path list.typeToList(type, x, y, width, height, rounded) Returns: PathList[][]
Convert a given type of SVG shape into an array of path segment lists.
| Name | Type | Description | 
|---|---|---|
| type | string | The type to be converted into an array of path segment lists. The type must be a string limited to the below: 
 | 
| x | number | The x coordinate of the type | 
| y | number | The y coordinate of the type | 
| width | number | The width of the type | 
| height | number | The height of the type | 
| rounded | number | The rounded corner value of the type | 
Returns:
Returns an array of path segment list array, essentially a 2 dimensional array.
Examples:
//Convert a rectangle with width 50px, height 50px, and rounded corner radius 2px at coordinate (10, 20) to an array of path segment list
Vecta.math.typeToList('rect', 10, 20, 50, 30, 2);