pantograph2d 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/Diagram-ab93c8b7.cjs +11 -0
  2. package/dist/Diagram-ab93c8b7.cjs.map +1 -0
  3. package/dist/Diagram-d848c815.js +4252 -0
  4. package/dist/Diagram-d848c815.js.map +1 -0
  5. package/dist/draw-0f591ea4.cjs +2 -0
  6. package/dist/draw-0f591ea4.cjs.map +1 -0
  7. package/dist/draw-a830827a.js +288 -0
  8. package/dist/draw-a830827a.js.map +1 -0
  9. package/dist/pantograph/drawShape.cjs +1 -1
  10. package/dist/pantograph/drawShape.cjs.map +1 -1
  11. package/dist/pantograph/drawShape.js +13 -17
  12. package/dist/pantograph/drawShape.js.map +1 -1
  13. package/dist/pantograph/models.cjs +1 -1
  14. package/dist/pantograph/models.js +5 -5
  15. package/dist/pantograph.cjs +6 -6
  16. package/dist/pantograph.cjs.map +1 -1
  17. package/dist/pantograph.js +501 -294
  18. package/dist/pantograph.js.map +1 -1
  19. package/dist/types/algorithms/boolean/figureBooleans.d.ts +8 -0
  20. package/dist/types/algorithms/boolean/loopBooleans.d.ts +14 -0
  21. package/dist/types/algorithms/boolean/strandBoolean.d.ts +8 -0
  22. package/dist/types/algorithms/boolean/strandsBetweenIntersections.d.ts +4 -0
  23. package/dist/types/algorithms/distances/arcArcDistance.d.ts +2 -0
  24. package/dist/types/algorithms/distances/genericDistance.d.ts +6 -0
  25. package/dist/types/algorithms/distances/index.d.ts +2 -0
  26. package/dist/types/algorithms/distances/lineArcDistance.d.ts +3 -0
  27. package/dist/types/algorithms/distances/lineLineDistance.d.ts +2 -0
  28. package/dist/types/algorithms/filletSegments.d.ts +3 -0
  29. package/dist/types/algorithms/intersections/arcArcIntersection.d.ts +3 -0
  30. package/dist/types/algorithms/intersections/arcEllipseArcIntersection.d.ts +3 -0
  31. package/dist/types/algorithms/intersections/ellipseArcEllipseArcIntersection.d.ts +3 -0
  32. package/dist/types/algorithms/intersections/ellipseEllipseIntersection.d.ts +4 -0
  33. package/dist/types/algorithms/intersections/index.d.ts +8 -0
  34. package/dist/types/algorithms/intersections/lineArcIntersection.d.ts +4 -0
  35. package/dist/types/algorithms/intersections/lineEllipseArcIntersection.d.ts +4 -0
  36. package/dist/types/algorithms/intersections/lineLineIntersection.d.ts +28 -0
  37. package/dist/types/algorithms/intersections/rayIntersections.d.ts +3 -0
  38. package/dist/types/algorithms/offsets/offsetFigure.d.ts +4 -0
  39. package/dist/types/algorithms/offsets/offsetSegment.d.ts +12 -0
  40. package/dist/types/algorithms/offsets/offsetStroke.d.ts +9 -0
  41. package/dist/types/algorithms/optimisation/DiRect.d.ts +45 -0
  42. package/dist/types/algorithms/organiseLoops.d.ts +9 -0
  43. package/dist/types/algorithms/simplify.d.ts +3 -0
  44. package/dist/types/algorithms/solvers/solvePolynomials.d.ts +4 -0
  45. package/dist/types/algorithms/stitchSegments.d.ts +2 -0
  46. package/dist/types/api/drawShape.d.ts +2 -0
  47. package/dist/types/api/models.d.ts +1 -0
  48. package/dist/types/booleanOperations.d.ts +11 -0
  49. package/dist/types/definitions.d.ts +2 -0
  50. package/dist/types/draw.d.ts +47 -0
  51. package/dist/types/drawShape/drawCircle.d.ts +2 -0
  52. package/dist/types/drawShape/drawRect.d.ts +5 -0
  53. package/dist/types/export/json/exportJSON.d.ts +196 -0
  54. package/dist/types/export/json/jsonDiagram.d.ts +69 -0
  55. package/dist/types/export/json/jsonFigure.d.ts +66 -0
  56. package/dist/types/export/json/jsonLoop.d.ts +32 -0
  57. package/dist/types/export/json/jsonSegment.d.ts +29 -0
  58. package/dist/types/export/svg/exportSVG.d.ts +18 -0
  59. package/dist/types/export/svg/svgDiagram.d.ts +2 -0
  60. package/dist/types/export/svg/svgFigure.d.ts +2 -0
  61. package/dist/types/export/svg/svgLoop.d.ts +2 -0
  62. package/dist/types/export/svg/svgSegment.d.ts +2 -0
  63. package/dist/types/export/svg/svgStrand.d.ts +2 -0
  64. package/dist/types/export/svg/wrapSVG.d.ts +4 -0
  65. package/dist/types/import/json/importJSON.d.ts +7 -0
  66. package/dist/types/main.d.ts +12 -0
  67. package/dist/types/models/BoundingBox.d.ts +15 -0
  68. package/dist/types/models/Diagram.d.ts +25 -0
  69. package/dist/types/models/Figure.d.ts +23 -0
  70. package/dist/types/models/Loop.d.ts +18 -0
  71. package/dist/types/models/Strand.d.ts +10 -0
  72. package/dist/types/models/Stroke.d.ts +29 -0
  73. package/dist/types/models/TransformationMatrix.d.ts +31 -0
  74. package/dist/types/models/exports.d.ts +11 -0
  75. package/dist/types/models/segments/Arc.d.ts +52 -0
  76. package/dist/types/models/segments/EllipseArc.d.ts +70 -0
  77. package/dist/types/models/segments/Line.d.ts +32 -0
  78. package/dist/types/models/segments/Segment.d.ts +28 -0
  79. package/dist/types/models/utils/Transformable.d.ts +14 -0
  80. package/dist/types/offsetOperations.d.ts +8 -0
  81. package/dist/types/operations.d.ts +2 -0
  82. package/dist/types/utils/allCombinations.d.ts +2 -0
  83. package/dist/types/utils/allPairs.d.ts +1 -0
  84. package/dist/types/utils/angularDistance.d.ts +1 -0
  85. package/dist/types/utils/listOfFigures.d.ts +4 -0
  86. package/dist/types/utils/projectPointOnLine.d.ts +3 -0
  87. package/dist/types/utils/range.d.ts +1 -0
  88. package/dist/types/utils/removeDuplicatePoints.d.ts +2 -0
  89. package/dist/types/utils/unitAngle.d.ts +1 -0
  90. package/dist/types/utils/zip.d.ts +3 -0
  91. package/dist/types/vectorOperations.d.ts +23 -0
  92. package/package.json +29 -10
  93. package/dist/Diagram-1c56996e.js +0 -1698
  94. package/dist/Diagram-1c56996e.js.map +0 -1
  95. package/dist/Diagram-4fa55d2b.cjs +0 -4
  96. package/dist/Diagram-4fa55d2b.cjs.map +0 -1
  97. package/dist/draw-44dd36a9.js +0 -256
  98. package/dist/draw-44dd36a9.js.map +0 -1
  99. package/dist/draw-8c69c65f.cjs +0 -2
  100. package/dist/draw-8c69c65f.cjs.map +0 -1
  101. package/dist/drawShape.d.ts +0 -153
  102. package/dist/models.d.ts +0 -210
  103. package/dist/pantograph/drawShape.d.ts +0 -1
  104. package/dist/pantograph/models.d.ts +0 -1
  105. package/dist/pantograph.d.ts +0 -388
package/dist/models.d.ts DELETED
@@ -1,210 +0,0 @@
1
- declare abstract class AbstractSegment<T extends AbstractSegment<T>> extends Transformable<T> {
2
- firstPoint: Vector;
3
- lastPoint: Vector;
4
- constructor(firstPoint: Vector, lastPoint: Vector);
5
- readonly precision: number;
6
- abstract segmentType: string;
7
- get repr(): string;
8
- get info(): string;
9
- abstract get midPoint(): Vector;
10
- abstract get boundingBox(): BoundingBox;
11
- abstract clone(): T;
12
- abstract reverse(): T;
13
- abstract isSame(other: AbstractSegment<any>): boolean;
14
- abstract distanceFrom(element: Vector): number;
15
- abstract isOnSegment(point: Vector): boolean;
16
- abstract tangentAt(point: Vector): Vector;
17
- abstract get tangentAtFirstPoint(): Vector;
18
- abstract get tangentAtLastPoint(): Vector;
19
- abstract splitAt(points: Vector[] | number[]): T[];
20
- abstract transform(matrix: TransformationMatrix): T;
21
- abstract paramPoint(t: number): Vector;
22
- }
23
-
24
- declare abstract class AbstractStroke<T extends AbstractStroke<T>> extends Transformable<T> {
25
- readonly segments: Segment[];
26
- abstract strokeType: string;
27
- get repr(): string;
28
- get info(): string;
29
- constructor(segments: Segment[], { ignoreChecks }?: {
30
- ignoreChecks?: boolean | undefined;
31
- });
32
- get firstPoint(): Vector;
33
- get lastPoint(): Vector;
34
- get segmentsCount(): number;
35
- onStroke(point: Vector): boolean;
36
- intersects(other: Stroke): boolean;
37
- overlappingSegments(other: Stroke): Segment[];
38
- private _boundingBox;
39
- get boundingBox(): BoundingBox;
40
- abstract reverse(): T;
41
- abstract clone(): T;
42
- abstract transform(matrix: TransformationMatrix): T;
43
- abstract simplify(): T;
44
- }
45
-
46
- export declare class Arc extends AbstractSegment<Arc> {
47
- segmentType: string;
48
- readonly center: Vector;
49
- readonly clockwise: boolean;
50
- constructor(firstPoint: Vector, lastPoint: Vector, center: Vector, clockwise?: boolean, { ignoreChecks }?: {
51
- ignoreChecks?: boolean | undefined;
52
- });
53
- get info(): string;
54
- isValidParameter(t: number): boolean;
55
- angleToParam(angle: number): number;
56
- private _angularLength;
57
- get angularLength(): number;
58
- paramPoint(t: number): Vector;
59
- pointToParam(point: Vector): number;
60
- private _radius;
61
- get radius(): number;
62
- private _firstAngle;
63
- get firstAngle(): number;
64
- private _lastAngle;
65
- get lastAngle(): number;
66
- get length(): number;
67
- get squareLength(): number;
68
- get midPoint(): Vector;
69
- isSame(other: Segment): boolean;
70
- clone(): Arc;
71
- reverse(): Arc;
72
- private _boundingBox;
73
- get boundingBox(): BoundingBox;
74
- distanceFrom(point: Vector): number;
75
- isOnSegment(point: Vector): boolean;
76
- tangentAt(point: Vector): Vector;
77
- get tangentAtFirstPoint(): Vector;
78
- get tangentAtLastPoint(): Vector;
79
- splitAt(points: Vector | Vector[]): Arc[];
80
- transform(matrix: TransformationMatrix): Arc;
81
- }
82
-
83
- export declare class BoundingBox {
84
- readonly xMin: number;
85
- readonly yMin: number;
86
- readonly xMax: number;
87
- readonly yMax: number;
88
- constructor(xMin?: number, yMin?: number, xMax?: number, yMax?: number);
89
- get width(): number;
90
- get height(): number;
91
- contains(point: Vector): boolean;
92
- overlaps(other: BoundingBox): boolean;
93
- addPoint(point: Vector): BoundingBox;
94
- merge(other: BoundingBox): BoundingBox;
95
- }
96
-
97
- export declare class Diagram extends Transformable<Diagram> {
98
- figures: Figure[];
99
- constructor(figures?: Figure[], { ignoreChecks }?: {
100
- ignoreChecks?: boolean | undefined;
101
- });
102
- private _boundingBox;
103
- get isEmpty(): boolean;
104
- get boundingBox(): BoundingBox;
105
- clone(): Diagram;
106
- transform(matrix: TransformationMatrix): Diagram;
107
- contains(point: Vector): boolean;
108
- intersects(other: Diagram): boolean;
109
- overlappingStrands(other: Diagram | Figure | Stroke): Strand[];
110
- fuse(other: Diagram): Diagram;
111
- cut(other: Diagram): Diagram;
112
- intersect(other: Diagram): Diagram;
113
- }
114
-
115
- export declare class Figure extends Transformable<Figure> {
116
- readonly contour: Loop;
117
- readonly holes: Loop[];
118
- constructor(contour: Loop, holes?: Loop[], { ignoreChecks }?: {
119
- ignoreChecks?: boolean | undefined;
120
- });
121
- get boundingBox(): BoundingBox;
122
- get isFull(): boolean;
123
- get allLoops(): Loop[];
124
- clone(): Figure;
125
- transform(matrix: TransformationMatrix): Figure;
126
- contains(point: Vector): boolean;
127
- intersects(other: Figure): boolean;
128
- overlappingStrands(other: Figure | Stroke): Strand[];
129
- }
130
-
131
- export declare class Line extends AbstractSegment<Line> {
132
- segmentType: string;
133
- isValidParameter(t: number): boolean;
134
- paramPoint(t: number): Vector;
135
- get length(): number;
136
- get squareLength(): number;
137
- private _V;
138
- get V(): Vector;
139
- get midPoint(): Vector;
140
- isSame(other: Segment): boolean;
141
- clone(): Line;
142
- reverse(): Line;
143
- private _boundingBox;
144
- get boundingBox(): BoundingBox;
145
- distanceFrom(point: Vector): number;
146
- isOnSegment(point: Vector): boolean;
147
- tangentAt(point: Vector): Vector;
148
- get normalVector(): Vector;
149
- get tangentAtFirstPoint(): Vector;
150
- get tangentAtLastPoint(): Vector;
151
- splitAt(points: Vector | Vector[]): Line[];
152
- transform(matrix: TransformationMatrix): Line;
153
- }
154
-
155
- export declare class Loop extends AbstractStroke<Loop> {
156
- strokeType: string;
157
- constructor(segments: Segment[], { ignoreChecks }?: {
158
- ignoreChecks?: boolean | undefined;
159
- });
160
- private _clockwise;
161
- get clockwise(): boolean;
162
- clone(): Loop;
163
- reverse(): Loop;
164
- transform(matrix: TransformationMatrix): Loop;
165
- contains(point: Vector): boolean;
166
- simplify(): Loop;
167
- }
168
-
169
- export declare type Segment = AbstractSegment<any>;
170
-
171
- export declare class Strand extends AbstractStroke<Strand> {
172
- strokeType: string;
173
- reverse(): Strand;
174
- clone(): Strand;
175
- extend(strand: Strand): Strand;
176
- simplify(): Strand;
177
- transform(matrix: TransformationMatrix): Strand;
178
- }
179
-
180
- export declare type Stroke = AbstractStroke<any>;
181
-
182
- export declare abstract class Transformable<T> {
183
- abstract transform(matrix: TransformationMatrix): T;
184
- translateX(x: number): T;
185
- translateY(y: number): T;
186
- translate(x: number, y: number): T;
187
- translateTo([x, y]: Vector): T;
188
- rotate(angle: number, center?: Vector): T;
189
- scale(factor: number, center?: Vector): T;
190
- mirrorCenter(center?: Vector): T;
191
- mirror(axis?: "x" | "y"): T;
192
- mirror(direction: Vector, center?: Vector): T;
193
- }
194
-
195
- export declare class TransformationMatrix {
196
- private _matrix;
197
- translate(x: number, y: number): TransformationMatrix;
198
- rotate(angle: number, center?: Vector): TransformationMatrix;
199
- mirrorX(): TransformationMatrix;
200
- mirrorY(): TransformationMatrix;
201
- mirrorLine(normal: Vector, point?: Vector): TransformationMatrix;
202
- mirrorCenter(center?: Vector): TransformationMatrix;
203
- scale(scalar: number, center?: Vector): TransformationMatrix;
204
- transform(point: Vector): Vector;
205
- keepsOrientation(): boolean;
206
- }
207
-
208
- declare type Vector = [number, number];
209
-
210
- export { }
@@ -1 +0,0 @@
1
- export * from '../drawShape/index'
@@ -1 +0,0 @@
1
- export * from '../models/exports'
@@ -1,388 +0,0 @@
1
- declare abstract class AbstractSegment<T extends AbstractSegment<T>> extends Transformable<T> {
2
- firstPoint: Vector;
3
- lastPoint: Vector;
4
- constructor(firstPoint: Vector, lastPoint: Vector);
5
- readonly precision: number;
6
- abstract segmentType: string;
7
- get repr(): string;
8
- get info(): string;
9
- abstract get midPoint(): Vector;
10
- abstract get boundingBox(): BoundingBox;
11
- abstract clone(): T;
12
- abstract reverse(): T;
13
- abstract isSame(other: AbstractSegment<any>): boolean;
14
- abstract distanceFrom(element: Vector): number;
15
- abstract isOnSegment(point: Vector): boolean;
16
- abstract tangentAt(point: Vector): Vector;
17
- abstract get tangentAtFirstPoint(): Vector;
18
- abstract get tangentAtLastPoint(): Vector;
19
- abstract splitAt(points: Vector[] | number[]): T[];
20
- abstract transform(matrix: TransformationMatrix): T;
21
- abstract paramPoint(t: number): Vector;
22
- }
23
-
24
- declare abstract class AbstractStroke<T extends AbstractStroke<T>> extends Transformable<T> {
25
- readonly segments: Segment[];
26
- abstract strokeType: string;
27
- get repr(): string;
28
- get info(): string;
29
- constructor(segments: Segment[], { ignoreChecks }?: {
30
- ignoreChecks?: boolean | undefined;
31
- });
32
- get firstPoint(): Vector;
33
- get lastPoint(): Vector;
34
- get segmentsCount(): number;
35
- onStroke(point: Vector): boolean;
36
- intersects(other: Stroke): boolean;
37
- overlappingSegments(other: Stroke): Segment[];
38
- private _boundingBox;
39
- get boundingBox(): BoundingBox;
40
- abstract reverse(): T;
41
- abstract clone(): T;
42
- abstract transform(matrix: TransformationMatrix): T;
43
- abstract simplify(): T;
44
- }
45
-
46
- export declare class Arc extends AbstractSegment<Arc> {
47
- segmentType: string;
48
- readonly center: Vector;
49
- readonly clockwise: boolean;
50
- constructor(firstPoint: Vector, lastPoint: Vector, center: Vector, clockwise?: boolean, { ignoreChecks }?: {
51
- ignoreChecks?: boolean | undefined;
52
- });
53
- get info(): string;
54
- isValidParameter(t: number): boolean;
55
- angleToParam(angle: number): number;
56
- private _angularLength;
57
- get angularLength(): number;
58
- paramPoint(t: number): Vector;
59
- pointToParam(point: Vector): number;
60
- private _radius;
61
- get radius(): number;
62
- private _firstAngle;
63
- get firstAngle(): number;
64
- private _lastAngle;
65
- get lastAngle(): number;
66
- get length(): number;
67
- get squareLength(): number;
68
- get midPoint(): Vector;
69
- isSame(other: Segment): boolean;
70
- clone(): Arc;
71
- reverse(): Arc;
72
- private _boundingBox;
73
- get boundingBox(): BoundingBox;
74
- distanceFrom(point: Vector): number;
75
- isOnSegment(point: Vector): boolean;
76
- tangentAt(point: Vector): Vector;
77
- get tangentAtFirstPoint(): Vector;
78
- get tangentAtLastPoint(): Vector;
79
- splitAt(points: Vector | Vector[]): Arc[];
80
- transform(matrix: TransformationMatrix): Arc;
81
- }
82
-
83
- export declare class BoundingBox {
84
- readonly xMin: number;
85
- readonly yMin: number;
86
- readonly xMax: number;
87
- readonly yMax: number;
88
- constructor(xMin?: number, yMin?: number, xMax?: number, yMax?: number);
89
- get width(): number;
90
- get height(): number;
91
- contains(point: Vector): boolean;
92
- overlaps(other: BoundingBox): boolean;
93
- addPoint(point: Vector): BoundingBox;
94
- merge(other: BoundingBox): BoundingBox;
95
- }
96
-
97
- export declare function cartesianToPolar([x, y]: Vector): [number, number];
98
-
99
- declare type ConfiguredShape = Shape | {
100
- shape: Shape;
101
- color?: string;
102
- };
103
-
104
- export declare function confineStrand(strand: Strand, diagram: Diagram | Figure | Loop, eraseOnBorder?: boolean): Strand[];
105
-
106
- export declare function cut(first: Diagram | Figure | Loop, second: Diagram | Figure | Loop): Diagram;
107
-
108
- export declare const DEG2RAD: number;
109
-
110
- export declare class Diagram extends Transformable<Diagram> {
111
- figures: Figure[];
112
- constructor(figures?: Figure[], { ignoreChecks }?: {
113
- ignoreChecks?: boolean | undefined;
114
- });
115
- private _boundingBox;
116
- get isEmpty(): boolean;
117
- get boundingBox(): BoundingBox;
118
- clone(): Diagram;
119
- transform(matrix: TransformationMatrix): Diagram;
120
- contains(point: Vector): boolean;
121
- intersects(other: Diagram): boolean;
122
- overlappingStrands(other: Diagram | Figure | Stroke): Strand[];
123
- fuse(other: Diagram): Diagram;
124
- cut(other: Diagram): Diagram;
125
- intersect(other: Diagram): Diagram;
126
- }
127
-
128
- export declare function draw(origin?: Vector): DrawingPen;
129
-
130
- declare class DrawingPen {
131
- protected pointer: Vector;
132
- protected firstPoint: Vector;
133
- protected pendingSegments: Segment[];
134
- protected _nextCorner: {
135
- radius: number;
136
- mode: "fillet" | "chamfer";
137
- } | null;
138
- constructor(origin?: Vector);
139
- movePointerTo(point: Vector): this;
140
- protected saveSegment(segment: Segment): this;
141
- lineTo(point: Vector): this;
142
- line(xDist: number, yDist: number): this;
143
- vLine(distance: number): this;
144
- hLine(distance: number): this;
145
- vLineTo(yPos: number): this;
146
- hLineTo(xPos: number): this;
147
- polarLineTo([r, theta]: Vector): this;
148
- polarLine(distance: number, angle: number): this;
149
- tangentLine(distance: number): this;
150
- threePointsArcTo(end: Vector, midPoint: Vector): this;
151
- threePointsArc(xDist: number, yDist: number, viaXDist: number, viaYDist: number): this;
152
- sagittaArcTo(end: Vector, sagitta: number): this;
153
- sagittaArc(xDist: number, yDist: number, sagitta: number): this;
154
- vSagittaArc(distance: number, sagitta: number): this;
155
- hSagittaArc(distance: number, sagitta: number): this;
156
- bulgeArcTo(end: Vector, bulge: number): this;
157
- bulgeArc(xDist: number, yDist: number, bulge: number): this;
158
- vBulgeArc(distance: number, bulge: number): this;
159
- hBulgeArc(distance: number, bulge: number): this;
160
- tangentArcTo(end: Vector, tangentAtStart?: Vector): this;
161
- tangentArc(xDist: number, yDist: number, tangentAtStart?: Vector): this;
162
- customCorner(radius: number, mode?: "fillet" | "chamfer"): this;
163
- protected _customCornerLastWithFirst(radius: number, mode?: "fillet" | "chamfer"): void;
164
- close(): Diagram;
165
- closeWithMirror(): Diagram;
166
- asStrand(): Strand;
167
- }
168
-
169
- export declare function eraseStrand(strand: Strand, diagram: Diagram | Figure | Loop, eraseOnBorder?: boolean): Strand[];
170
-
171
- export declare function exportJSON(shape: Shape_2): {
172
- type: string;
173
- firstPoint: Vector;
174
- lastPoint: Vector;
175
- center?: undefined;
176
- clockwise?: undefined;
177
- } | {
178
- type: string;
179
- firstPoint: Vector;
180
- lastPoint: Vector;
181
- center: Vector;
182
- clockwise: boolean;
183
- } | {
184
- type: string;
185
- segments: ({
186
- type: string;
187
- firstPoint: Vector;
188
- lastPoint: Vector;
189
- center?: undefined;
190
- clockwise?: undefined;
191
- } | {
192
- type: string;
193
- firstPoint: Vector;
194
- lastPoint: Vector;
195
- center: Vector;
196
- clockwise: boolean;
197
- })[];
198
- } | {
199
- type: string;
200
- contour: {
201
- type: string;
202
- segments: ({
203
- type: string;
204
- firstPoint: Vector;
205
- lastPoint: Vector;
206
- center?: undefined;
207
- clockwise?: undefined;
208
- } | {
209
- type: string;
210
- firstPoint: Vector;
211
- lastPoint: Vector;
212
- center: Vector;
213
- clockwise: boolean;
214
- })[];
215
- };
216
- holes: {
217
- type: string;
218
- segments: ({
219
- type: string;
220
- firstPoint: Vector;
221
- lastPoint: Vector;
222
- center?: undefined;
223
- clockwise?: undefined;
224
- } | {
225
- type: string;
226
- firstPoint: Vector;
227
- lastPoint: Vector;
228
- center: Vector;
229
- clockwise: boolean;
230
- })[];
231
- }[];
232
- } | {
233
- type: string;
234
- figures: {
235
- type: string;
236
- contour: {
237
- type: string;
238
- segments: ({
239
- type: string;
240
- firstPoint: Vector;
241
- lastPoint: Vector;
242
- center?: undefined;
243
- clockwise?: undefined;
244
- } | {
245
- type: string;
246
- firstPoint: Vector;
247
- lastPoint: Vector;
248
- center: Vector;
249
- clockwise: boolean;
250
- })[];
251
- };
252
- holes: {
253
- type: string;
254
- segments: ({
255
- type: string;
256
- firstPoint: Vector;
257
- lastPoint: Vector;
258
- center?: undefined;
259
- clockwise?: undefined;
260
- } | {
261
- type: string;
262
- firstPoint: Vector;
263
- lastPoint: Vector;
264
- center: Vector;
265
- clockwise: boolean;
266
- })[];
267
- }[];
268
- }[];
269
- };
270
-
271
- export declare function exportSVG(shape: ConfiguredShape | ConfiguredShape[], margin?: number): string;
272
-
273
- export declare class Figure extends Transformable<Figure> {
274
- readonly contour: Loop;
275
- readonly holes: Loop[];
276
- constructor(contour: Loop, holes?: Loop[], { ignoreChecks }?: {
277
- ignoreChecks?: boolean | undefined;
278
- });
279
- get boundingBox(): BoundingBox;
280
- get isFull(): boolean;
281
- get allLoops(): Loop[];
282
- clone(): Figure;
283
- transform(matrix: TransformationMatrix): Figure;
284
- contains(point: Vector): boolean;
285
- intersects(other: Figure): boolean;
286
- overlappingStrands(other: Figure | Stroke): Strand[];
287
- }
288
-
289
- export declare function fuse(first: Diagram | Figure | Loop, second: Diagram | Figure | Loop): Diagram;
290
-
291
- export declare function fuseAll(shapes: (Diagram | Figure | Loop)[]): Diagram;
292
-
293
- export declare function importJSON(json: any): Diagram | Figure | Loop | Line | Arc;
294
-
295
- export declare function intersect(first: Diagram | Figure | Loop, second: Diagram | Figure | Loop): Diagram;
296
-
297
- export declare class Line extends AbstractSegment<Line> {
298
- segmentType: string;
299
- isValidParameter(t: number): boolean;
300
- paramPoint(t: number): Vector;
301
- get length(): number;
302
- get squareLength(): number;
303
- private _V;
304
- get V(): Vector;
305
- get midPoint(): Vector;
306
- isSame(other: Segment): boolean;
307
- clone(): Line;
308
- reverse(): Line;
309
- private _boundingBox;
310
- get boundingBox(): BoundingBox;
311
- distanceFrom(point: Vector): number;
312
- isOnSegment(point: Vector): boolean;
313
- tangentAt(point: Vector): Vector;
314
- get normalVector(): Vector;
315
- get tangentAtFirstPoint(): Vector;
316
- get tangentAtLastPoint(): Vector;
317
- splitAt(points: Vector | Vector[]): Line[];
318
- transform(matrix: TransformationMatrix): Line;
319
- }
320
-
321
- export declare class Loop extends AbstractStroke<Loop> {
322
- strokeType: string;
323
- constructor(segments: Segment[], { ignoreChecks }?: {
324
- ignoreChecks?: boolean | undefined;
325
- });
326
- private _clockwise;
327
- get clockwise(): boolean;
328
- clone(): Loop;
329
- reverse(): Loop;
330
- transform(matrix: TransformationMatrix): Loop;
331
- contains(point: Vector): boolean;
332
- simplify(): Loop;
333
- }
334
-
335
- export declare function offset(shape: Diagram | Figure | Loop, offsetDistance: number): Diagram;
336
-
337
- export declare function polarToCartesian(r: number, theta: number): Vector;
338
-
339
- export declare const RAD2DEG: number;
340
-
341
- export declare type Segment = AbstractSegment<any>;
342
-
343
- declare type Shape = Loop | Figure | Diagram | Arc | Line | Strand;
344
-
345
- declare type Shape_2 = Loop | Figure | Diagram | Arc | Line;
346
-
347
- export declare class Strand extends AbstractStroke<Strand> {
348
- strokeType: string;
349
- reverse(): Strand;
350
- clone(): Strand;
351
- extend(strand: Strand): Strand;
352
- simplify(): Strand;
353
- transform(matrix: TransformationMatrix): Strand;
354
- }
355
-
356
- export declare type Stroke = AbstractStroke<any>;
357
-
358
- export declare function svgBody(shape: Shape): string;
359
-
360
- declare abstract class Transformable<T> {
361
- abstract transform(matrix: TransformationMatrix): T;
362
- translateX(x: number): T;
363
- translateY(y: number): T;
364
- translate(x: number, y: number): T;
365
- translateTo([x, y]: Vector): T;
366
- rotate(angle: number, center?: Vector): T;
367
- scale(factor: number, center?: Vector): T;
368
- mirrorCenter(center?: Vector): T;
369
- mirror(axis?: "x" | "y"): T;
370
- mirror(direction: Vector, center?: Vector): T;
371
- }
372
-
373
- export declare class TransformationMatrix {
374
- private _matrix;
375
- translate(x: number, y: number): TransformationMatrix;
376
- rotate(angle: number, center?: Vector): TransformationMatrix;
377
- mirrorX(): TransformationMatrix;
378
- mirrorY(): TransformationMatrix;
379
- mirrorLine(normal: Vector, point?: Vector): TransformationMatrix;
380
- mirrorCenter(center?: Vector): TransformationMatrix;
381
- scale(scalar: number, center?: Vector): TransformationMatrix;
382
- transform(point: Vector): Vector;
383
- keepsOrientation(): boolean;
384
- }
385
-
386
- export declare type Vector = [number, number];
387
-
388
- export { }