Arc

Arc

Class representing a circular arc

Constructor

new Arc(pc, r, startAngle, endAngle, counterClockwise)

Source:
Parameters:
Name Type Description
pc Point arc center
r number arc radius
startAngle number start angle in radians from 0 to 2*PI
endAngle number end angle in radians from 0 to 2*PI
counterClockwise boolean arc direction, true - clockwise, false - counter clockwise

Classes

Arc

Members

pc :Point

Arc center
Source:
Type:

r :number

Arc radius
Source:
Type:
  • number

startAngle :number

Arc start angle in radians
Source:
Type:
  • number

endAngle :number

Arc end angle in radians
Source:
Type:
  • number

counterClockwise :boolean

Arc orientation
Source:
Type:
  • boolean

sweep

Get sweep angle in radians. Sweep angle is non-negative number from 0 to 2*PI
Source:

start

Get start point of arc
Source:

end

Get end point of arc
Source:

center

Get center of arc
Source:

length

Get arc length
Source:

box

Get bounding box of the arc
Source:

Methods

clone() → {Arc}

Return new cloned instance of arc
Source:
Returns:
Type:
Arc

contains(pt) → {boolean}

Returns true if arc contains point, false otherwise
Source:
Parameters:
Name Type Description
pt Point point to test
Returns:
Type:
boolean

split(pt) → {Array.<Arc>}

When given point belongs to arc, return array of two arcs split by this point. If points is incident to start or end point of the arc, return clone of the arc. If point does not belong to the arcs, return empty array.
Source:
Parameters:
Name Type Description
pt Point Query point
Returns:
Type:
Array.<Arc>

middle() → {Point}

Return middle point of the arc
Source:
Returns:
Type:
Point

pointAtLength(length) → {Point}

Get point at given length
Source:
Parameters:
Name Type Description
length number The length along the arc
Returns:
Type:
Point

chordHeight() → {number}

Returns chord height ("sagitta") of the arc
Source:
Returns:
Type:
number

intersect(shape) → {Array.<Points>}

Returns array of intersection points between arc and other shape
Source:
Parameters:
Name Type Description
shape Shape Shape of the one of supported types
Returns:
Type:
Array.<Points>

distanceTo(shape) → {number|Segment}

Calculate distance and shortest segment from arc to shape and return array [distance, shortest segment]
Source:
Parameters:
Name Type Description
shape Shape Shape of the one of supported types Point, Line, Circle, Segment, Arc, Polygon or Planar Set
Returns:
  • Type:
    number
    distance from arc to shape
  • Type:
    Segment
    shortest segment between arc and shape (started at arc, ended at shape)

breakToFunctional() → {Array.<Arcs>}

Breaks arc in extreme point 0, pi/2, pi, 3*pi/2 and returns array of sub-arcs
Source:
Returns:
Type:
Array.<Arcs>

tangentInStart() → {Vector}

Return tangent unit vector in the start point in the direction from start to end
Source:
Returns:
Type:
Vector

tangentInEnd() → {Vector}

Return tangent unit vector in the end point in the direction from end to start
Source:
Returns:
Type:
Vector

reverse() → {Arc}

Returns new arc with swapped start and end angles and reversed direction
Source:
Returns:
Type:
Arc

translate(vec) → {Segment}

Returns new arc translated by vector vec
Source:
Parameters:
Name Type Description
vec Vector
Returns:
Type:
Segment

rotate(angle, center) → {Arc}

Return new segment rotated by given angle around given point If point omitted, rotate around origin (0,0) Positive value of angle defines rotation counter clockwise, negative - clockwise
Source:
Parameters:
Name Type Default Description
angle number 0 rotation angle in radians
center Point center point, default is (0,0)
Returns:
Type:
Arc

scale(scaleX, scaleY) → {Arc}

Return new arc scaled by scaleX, scaleY.
Source:
Parameters:
Name Type Default Description
scaleX number 1 scale value by X
scaleY number 1 scale value by Y
Returns:
Type:
Arc

transform(matrix) → {Arc}

Return new arc transformed using affine transformation matrix
Note 1. Non-equal scaling by x and y (abs(matrix[0]) != abs(matrix[3])) produce illegal result because it should create elliptic arc but this package does not support ellipses Note 2. Mirror transformation (matrix[0] * matrix[3] < 0) change direction of the arc to the opposite TODO: support non-equal scaling arc to ellipse or throw exception ?
Source:
Parameters:
Name Type Description
matrix Matrix affine transformation matrix
Returns:
Type:
Arc

sortPoints(array) → {Array.<Point>}

Sort given array of points from arc start to end, assuming all points lay on the arc
Source:
Parameters:
Name Type Description
array Array.<Point> of points
Returns:
Type:
Array.<Point>
new array sorted

toJSON() → {Object}

This method returns an object that defines how data will be serialized when called JSON.stringify() method
Source:
Returns:
Type:
Object

svg(attrs) → {string}

Return string to draw arc in svg
Source:
Parameters:
Name Type Description
attrs Object an object with attributes of svg path element, like "stroke", "strokeWidth", "fill"
Defaults are stroke:"black", strokeWidth:"1", fill:"none"
Returns:
Type:
string