@nasser-sw/fabric 7.0.1-beta8 → 7.0.1-beta9

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 (138) hide show
  1. package/debug/konva-master/CHANGELOG.md +1475 -0
  2. package/debug/konva-master/LICENSE +22 -0
  3. package/debug/konva-master/README.md +209 -0
  4. package/debug/konva-master/gulpfile.mjs +110 -0
  5. package/debug/konva-master/package.json +139 -0
  6. package/debug/konva-master/release.sh +62 -0
  7. package/debug/konva-master/resources/doc-includes/ContainerParams.txt +6 -0
  8. package/debug/konva-master/resources/doc-includes/NodeParams.txt +20 -0
  9. package/debug/konva-master/resources/doc-includes/ShapeParams.txt +53 -0
  10. package/debug/konva-master/resources/jsdoc.conf.json +28 -0
  11. package/debug/konva-master/rollup.config.mjs +32 -0
  12. package/debug/konva-master/src/Animation.ts +237 -0
  13. package/debug/konva-master/src/BezierFunctions.ts +826 -0
  14. package/debug/konva-master/src/Canvas.ts +230 -0
  15. package/debug/konva-master/src/Container.ts +649 -0
  16. package/debug/konva-master/src/Context.ts +1017 -0
  17. package/debug/konva-master/src/Core.ts +5 -0
  18. package/debug/konva-master/src/DragAndDrop.ts +173 -0
  19. package/debug/konva-master/src/Factory.ts +246 -0
  20. package/debug/konva-master/src/FastLayer.ts +29 -0
  21. package/debug/konva-master/src/Global.ts +210 -0
  22. package/debug/konva-master/src/Group.ts +31 -0
  23. package/debug/konva-master/src/Layer.ts +546 -0
  24. package/debug/konva-master/src/Node.ts +3477 -0
  25. package/debug/konva-master/src/PointerEvents.ts +67 -0
  26. package/debug/konva-master/src/Shape.ts +2081 -0
  27. package/debug/konva-master/src/Stage.ts +1000 -0
  28. package/debug/konva-master/src/Tween.ts +811 -0
  29. package/debug/konva-master/src/Util.ts +1123 -0
  30. package/debug/konva-master/src/Validators.ts +210 -0
  31. package/debug/konva-master/src/_CoreInternals.ts +85 -0
  32. package/debug/konva-master/src/_FullInternals.ts +171 -0
  33. package/debug/konva-master/src/canvas-backend.ts +36 -0
  34. package/debug/konva-master/src/filters/Blur.ts +388 -0
  35. package/debug/konva-master/src/filters/Brighten.ts +48 -0
  36. package/debug/konva-master/src/filters/Brightness.ts +30 -0
  37. package/debug/konva-master/src/filters/Contrast.ts +75 -0
  38. package/debug/konva-master/src/filters/Emboss.ts +207 -0
  39. package/debug/konva-master/src/filters/Enhance.ts +154 -0
  40. package/debug/konva-master/src/filters/Grayscale.ts +25 -0
  41. package/debug/konva-master/src/filters/HSL.ts +108 -0
  42. package/debug/konva-master/src/filters/HSV.ts +106 -0
  43. package/debug/konva-master/src/filters/Invert.ts +23 -0
  44. package/debug/konva-master/src/filters/Kaleidoscope.ts +274 -0
  45. package/debug/konva-master/src/filters/Mask.ts +220 -0
  46. package/debug/konva-master/src/filters/Noise.ts +44 -0
  47. package/debug/konva-master/src/filters/Pixelate.ts +107 -0
  48. package/debug/konva-master/src/filters/Posterize.ts +46 -0
  49. package/debug/konva-master/src/filters/RGB.ts +82 -0
  50. package/debug/konva-master/src/filters/RGBA.ts +103 -0
  51. package/debug/konva-master/src/filters/Sepia.ts +27 -0
  52. package/debug/konva-master/src/filters/Solarize.ts +29 -0
  53. package/debug/konva-master/src/filters/Threshold.ts +44 -0
  54. package/debug/konva-master/src/index.ts +3 -0
  55. package/debug/konva-master/src/shapes/Arc.ts +176 -0
  56. package/debug/konva-master/src/shapes/Arrow.ts +231 -0
  57. package/debug/konva-master/src/shapes/Circle.ts +76 -0
  58. package/debug/konva-master/src/shapes/Ellipse.ts +121 -0
  59. package/debug/konva-master/src/shapes/Image.ts +319 -0
  60. package/debug/konva-master/src/shapes/Label.ts +386 -0
  61. package/debug/konva-master/src/shapes/Line.ts +364 -0
  62. package/debug/konva-master/src/shapes/Path.ts +1013 -0
  63. package/debug/konva-master/src/shapes/Rect.ts +79 -0
  64. package/debug/konva-master/src/shapes/RegularPolygon.ts +167 -0
  65. package/debug/konva-master/src/shapes/Ring.ts +94 -0
  66. package/debug/konva-master/src/shapes/Sprite.ts +370 -0
  67. package/debug/konva-master/src/shapes/Star.ts +125 -0
  68. package/debug/konva-master/src/shapes/Text.ts +1065 -0
  69. package/debug/konva-master/src/shapes/TextPath.ts +583 -0
  70. package/debug/konva-master/src/shapes/Transformer.ts +1889 -0
  71. package/debug/konva-master/src/shapes/Wedge.ts +129 -0
  72. package/debug/konva-master/src/skia-backend.ts +35 -0
  73. package/debug/konva-master/src/types.ts +84 -0
  74. package/debug/konva-master/tsconfig.json +31 -0
  75. package/debug/konva-master/tsconfig.test.json +7 -0
  76. package/dist/index.js +915 -23
  77. package/dist/index.js.map +1 -1
  78. package/dist/index.min.js +1 -1
  79. package/dist/index.min.js.map +1 -1
  80. package/dist/index.min.mjs +1 -1
  81. package/dist/index.min.mjs.map +1 -1
  82. package/dist/index.mjs +915 -23
  83. package/dist/index.mjs.map +1 -1
  84. package/dist/index.node.cjs +915 -23
  85. package/dist/index.node.cjs.map +1 -1
  86. package/dist/index.node.mjs +915 -23
  87. package/dist/index.node.mjs.map +1 -1
  88. package/dist/package.json.min.mjs +1 -1
  89. package/dist/package.json.mjs +1 -1
  90. package/dist/src/shapes/Text/Text.d.ts +19 -0
  91. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  92. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  93. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  94. package/dist/src/shapes/Text/Text.mjs +238 -4
  95. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  96. package/dist/src/shapes/Textbox.d.ts +38 -1
  97. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  98. package/dist/src/shapes/Textbox.min.mjs +1 -1
  99. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  100. package/dist/src/shapes/Textbox.mjs +497 -15
  101. package/dist/src/shapes/Textbox.mjs.map +1 -1
  102. package/dist/src/text/examples/arabicTextExample.d.ts +60 -0
  103. package/dist/src/text/examples/arabicTextExample.d.ts.map +1 -0
  104. package/dist/src/text/measure.d.ts +9 -0
  105. package/dist/src/text/measure.d.ts.map +1 -1
  106. package/dist/src/text/measure.min.mjs +1 -1
  107. package/dist/src/text/measure.min.mjs.map +1 -1
  108. package/dist/src/text/measure.mjs +175 -4
  109. package/dist/src/text/measure.mjs.map +1 -1
  110. package/dist/src/text/overlayEditor.d.ts.map +1 -1
  111. package/dist/src/text/overlayEditor.min.mjs +1 -1
  112. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  113. package/dist/src/text/overlayEditor.mjs +7 -0
  114. package/dist/src/text/overlayEditor.mjs.map +1 -1
  115. package/dist/src/text/scriptUtils.d.ts +142 -0
  116. package/dist/src/text/scriptUtils.d.ts.map +1 -0
  117. package/dist/src/text/scriptUtils.min.mjs +2 -0
  118. package/dist/src/text/scriptUtils.min.mjs.map +1 -0
  119. package/dist/src/text/scriptUtils.mjs +212 -0
  120. package/dist/src/text/scriptUtils.mjs.map +1 -0
  121. package/dist-extensions/src/shapes/Text/Text.d.ts +19 -0
  122. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  123. package/dist-extensions/src/shapes/Textbox.d.ts +38 -1
  124. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  125. package/dist-extensions/src/text/measure.d.ts +9 -0
  126. package/dist-extensions/src/text/measure.d.ts.map +1 -1
  127. package/dist-extensions/src/text/overlayEditor.d.ts.map +1 -1
  128. package/dist-extensions/src/text/scriptUtils.d.ts +142 -0
  129. package/dist-extensions/src/text/scriptUtils.d.ts.map +1 -0
  130. package/fabric-test-editor.html +2401 -46
  131. package/fonts/STV Bold.ttf +0 -0
  132. package/fonts/STV Light.ttf +0 -0
  133. package/fonts/STV Regular.ttf +0 -0
  134. package/package.json +1 -1
  135. package/src/shapes/Text/Text.ts +238 -5
  136. package/src/shapes/Textbox.ts +521 -11
  137. package/src/text/measure.ts +200 -50
  138. package/src/text/overlayEditor.ts +7 -0
@@ -0,0 +1,826 @@
1
+ // Credits: rveciana/svg-path-properties
2
+
3
+ // Legendre-Gauss abscissae (xi values, defined at i=n as the roots of the nth order Legendre polynomial Pn(x))
4
+ export const tValues = [
5
+ [],
6
+ [],
7
+ [
8
+ -0.5773502691896257645091487805019574556476,
9
+ 0.5773502691896257645091487805019574556476,
10
+ ],
11
+ [
12
+ 0, -0.7745966692414833770358530799564799221665,
13
+ 0.7745966692414833770358530799564799221665,
14
+ ],
15
+ [
16
+ -0.3399810435848562648026657591032446872005,
17
+ 0.3399810435848562648026657591032446872005,
18
+ -0.8611363115940525752239464888928095050957,
19
+ 0.8611363115940525752239464888928095050957,
20
+ ],
21
+ [
22
+ 0, -0.5384693101056830910363144207002088049672,
23
+ 0.5384693101056830910363144207002088049672,
24
+ -0.9061798459386639927976268782993929651256,
25
+ 0.9061798459386639927976268782993929651256,
26
+ ],
27
+ [
28
+ 0.6612093864662645136613995950199053470064,
29
+ -0.6612093864662645136613995950199053470064,
30
+ -0.2386191860831969086305017216807119354186,
31
+ 0.2386191860831969086305017216807119354186,
32
+ -0.9324695142031520278123015544939946091347,
33
+ 0.9324695142031520278123015544939946091347,
34
+ ],
35
+ [
36
+ 0, 0.4058451513773971669066064120769614633473,
37
+ -0.4058451513773971669066064120769614633473,
38
+ -0.7415311855993944398638647732807884070741,
39
+ 0.7415311855993944398638647732807884070741,
40
+ -0.9491079123427585245261896840478512624007,
41
+ 0.9491079123427585245261896840478512624007,
42
+ ],
43
+ [
44
+ -0.1834346424956498049394761423601839806667,
45
+ 0.1834346424956498049394761423601839806667,
46
+ -0.5255324099163289858177390491892463490419,
47
+ 0.5255324099163289858177390491892463490419,
48
+ -0.7966664774136267395915539364758304368371,
49
+ 0.7966664774136267395915539364758304368371,
50
+ -0.9602898564975362316835608685694729904282,
51
+ 0.9602898564975362316835608685694729904282,
52
+ ],
53
+ [
54
+ 0, -0.8360311073266357942994297880697348765441,
55
+ 0.8360311073266357942994297880697348765441,
56
+ -0.9681602395076260898355762029036728700494,
57
+ 0.9681602395076260898355762029036728700494,
58
+ -0.3242534234038089290385380146433366085719,
59
+ 0.3242534234038089290385380146433366085719,
60
+ -0.6133714327005903973087020393414741847857,
61
+ 0.6133714327005903973087020393414741847857,
62
+ ],
63
+ [
64
+ -0.1488743389816312108848260011297199846175,
65
+ 0.1488743389816312108848260011297199846175,
66
+ -0.4333953941292471907992659431657841622,
67
+ 0.4333953941292471907992659431657841622,
68
+ -0.6794095682990244062343273651148735757692,
69
+ 0.6794095682990244062343273651148735757692,
70
+ -0.8650633666889845107320966884234930485275,
71
+ 0.8650633666889845107320966884234930485275,
72
+ -0.9739065285171717200779640120844520534282,
73
+ 0.9739065285171717200779640120844520534282,
74
+ ],
75
+ [
76
+ 0, -0.2695431559523449723315319854008615246796,
77
+ 0.2695431559523449723315319854008615246796,
78
+ -0.5190961292068118159257256694586095544802,
79
+ 0.5190961292068118159257256694586095544802,
80
+ -0.7301520055740493240934162520311534580496,
81
+ 0.7301520055740493240934162520311534580496,
82
+ -0.8870625997680952990751577693039272666316,
83
+ 0.8870625997680952990751577693039272666316,
84
+ -0.9782286581460569928039380011228573907714,
85
+ 0.9782286581460569928039380011228573907714,
86
+ ],
87
+ [
88
+ -0.1252334085114689154724413694638531299833,
89
+ 0.1252334085114689154724413694638531299833,
90
+ -0.3678314989981801937526915366437175612563,
91
+ 0.3678314989981801937526915366437175612563,
92
+ -0.587317954286617447296702418940534280369,
93
+ 0.587317954286617447296702418940534280369,
94
+ -0.7699026741943046870368938332128180759849,
95
+ 0.7699026741943046870368938332128180759849,
96
+ -0.9041172563704748566784658661190961925375,
97
+ 0.9041172563704748566784658661190961925375,
98
+ -0.9815606342467192506905490901492808229601,
99
+ 0.9815606342467192506905490901492808229601,
100
+ ],
101
+ [
102
+ 0, -0.2304583159551347940655281210979888352115,
103
+ 0.2304583159551347940655281210979888352115,
104
+ -0.4484927510364468528779128521276398678019,
105
+ 0.4484927510364468528779128521276398678019,
106
+ -0.6423493394403402206439846069955156500716,
107
+ 0.6423493394403402206439846069955156500716,
108
+ -0.8015780907333099127942064895828598903056,
109
+ 0.8015780907333099127942064895828598903056,
110
+ -0.9175983992229779652065478365007195123904,
111
+ 0.9175983992229779652065478365007195123904,
112
+ -0.9841830547185881494728294488071096110649,
113
+ 0.9841830547185881494728294488071096110649,
114
+ ],
115
+ [
116
+ -0.1080549487073436620662446502198347476119,
117
+ 0.1080549487073436620662446502198347476119,
118
+ -0.3191123689278897604356718241684754668342,
119
+ 0.3191123689278897604356718241684754668342,
120
+ -0.5152486363581540919652907185511886623088,
121
+ 0.5152486363581540919652907185511886623088,
122
+ -0.6872929048116854701480198030193341375384,
123
+ 0.6872929048116854701480198030193341375384,
124
+ -0.8272013150697649931897947426503949610397,
125
+ 0.8272013150697649931897947426503949610397,
126
+ -0.928434883663573517336391139377874264477,
127
+ 0.928434883663573517336391139377874264477,
128
+ -0.986283808696812338841597266704052801676,
129
+ 0.986283808696812338841597266704052801676,
130
+ ],
131
+ [
132
+ 0, -0.2011940939974345223006283033945962078128,
133
+ 0.2011940939974345223006283033945962078128,
134
+ -0.3941513470775633698972073709810454683627,
135
+ 0.3941513470775633698972073709810454683627,
136
+ -0.5709721726085388475372267372539106412383,
137
+ 0.5709721726085388475372267372539106412383,
138
+ -0.7244177313601700474161860546139380096308,
139
+ 0.7244177313601700474161860546139380096308,
140
+ -0.8482065834104272162006483207742168513662,
141
+ 0.8482065834104272162006483207742168513662,
142
+ -0.9372733924007059043077589477102094712439,
143
+ 0.9372733924007059043077589477102094712439,
144
+ -0.9879925180204854284895657185866125811469,
145
+ 0.9879925180204854284895657185866125811469,
146
+ ],
147
+ [
148
+ -0.0950125098376374401853193354249580631303,
149
+ 0.0950125098376374401853193354249580631303,
150
+ -0.281603550779258913230460501460496106486,
151
+ 0.281603550779258913230460501460496106486,
152
+ -0.45801677765722738634241944298357757354,
153
+ 0.45801677765722738634241944298357757354,
154
+ -0.6178762444026437484466717640487910189918,
155
+ 0.6178762444026437484466717640487910189918,
156
+ -0.7554044083550030338951011948474422683538,
157
+ 0.7554044083550030338951011948474422683538,
158
+ -0.8656312023878317438804678977123931323873,
159
+ 0.8656312023878317438804678977123931323873,
160
+ -0.9445750230732325760779884155346083450911,
161
+ 0.9445750230732325760779884155346083450911,
162
+ -0.9894009349916499325961541734503326274262,
163
+ 0.9894009349916499325961541734503326274262,
164
+ ],
165
+ [
166
+ 0, -0.1784841814958478558506774936540655574754,
167
+ 0.1784841814958478558506774936540655574754,
168
+ -0.3512317634538763152971855170953460050405,
169
+ 0.3512317634538763152971855170953460050405,
170
+ -0.5126905370864769678862465686295518745829,
171
+ 0.5126905370864769678862465686295518745829,
172
+ -0.6576711592166907658503022166430023351478,
173
+ 0.6576711592166907658503022166430023351478,
174
+ -0.7815140038968014069252300555204760502239,
175
+ 0.7815140038968014069252300555204760502239,
176
+ -0.8802391537269859021229556944881556926234,
177
+ 0.8802391537269859021229556944881556926234,
178
+ -0.9506755217687677612227169578958030214433,
179
+ 0.9506755217687677612227169578958030214433,
180
+ -0.9905754753144173356754340199406652765077,
181
+ 0.9905754753144173356754340199406652765077,
182
+ ],
183
+ [
184
+ -0.0847750130417353012422618529357838117333,
185
+ 0.0847750130417353012422618529357838117333,
186
+ -0.2518862256915055095889728548779112301628,
187
+ 0.2518862256915055095889728548779112301628,
188
+ -0.4117511614628426460359317938330516370789,
189
+ 0.4117511614628426460359317938330516370789,
190
+ -0.5597708310739475346078715485253291369276,
191
+ 0.5597708310739475346078715485253291369276,
192
+ -0.6916870430603532078748910812888483894522,
193
+ 0.6916870430603532078748910812888483894522,
194
+ -0.8037049589725231156824174550145907971032,
195
+ 0.8037049589725231156824174550145907971032,
196
+ -0.8926024664975557392060605911271455154078,
197
+ 0.8926024664975557392060605911271455154078,
198
+ -0.9558239495713977551811958929297763099728,
199
+ 0.9558239495713977551811958929297763099728,
200
+ -0.9915651684209309467300160047061507702525,
201
+ 0.9915651684209309467300160047061507702525,
202
+ ],
203
+ [
204
+ 0, -0.1603586456402253758680961157407435495048,
205
+ 0.1603586456402253758680961157407435495048,
206
+ -0.3165640999636298319901173288498449178922,
207
+ 0.3165640999636298319901173288498449178922,
208
+ -0.4645707413759609457172671481041023679762,
209
+ 0.4645707413759609457172671481041023679762,
210
+ -0.6005453046616810234696381649462392798683,
211
+ 0.6005453046616810234696381649462392798683,
212
+ -0.7209661773352293786170958608237816296571,
213
+ 0.7209661773352293786170958608237816296571,
214
+ -0.8227146565371428249789224867127139017745,
215
+ 0.8227146565371428249789224867127139017745,
216
+ -0.9031559036148179016426609285323124878093,
217
+ 0.9031559036148179016426609285323124878093,
218
+ -0.960208152134830030852778840687651526615,
219
+ 0.960208152134830030852778840687651526615,
220
+ -0.9924068438435844031890176702532604935893,
221
+ 0.9924068438435844031890176702532604935893,
222
+ ],
223
+ [
224
+ -0.0765265211334973337546404093988382110047,
225
+ 0.0765265211334973337546404093988382110047,
226
+ -0.227785851141645078080496195368574624743,
227
+ 0.227785851141645078080496195368574624743,
228
+ -0.3737060887154195606725481770249272373957,
229
+ 0.3737060887154195606725481770249272373957,
230
+ -0.5108670019508270980043640509552509984254,
231
+ 0.5108670019508270980043640509552509984254,
232
+ -0.6360536807265150254528366962262859367433,
233
+ 0.6360536807265150254528366962262859367433,
234
+ -0.7463319064601507926143050703556415903107,
235
+ 0.7463319064601507926143050703556415903107,
236
+ -0.8391169718222188233945290617015206853296,
237
+ 0.8391169718222188233945290617015206853296,
238
+ -0.9122344282513259058677524412032981130491,
239
+ 0.9122344282513259058677524412032981130491,
240
+ -0.963971927277913791267666131197277221912,
241
+ 0.963971927277913791267666131197277221912,
242
+ -0.9931285991850949247861223884713202782226,
243
+ 0.9931285991850949247861223884713202782226,
244
+ ],
245
+ [
246
+ 0, -0.1455618541608950909370309823386863301163,
247
+ 0.1455618541608950909370309823386863301163,
248
+ -0.288021316802401096600792516064600319909,
249
+ 0.288021316802401096600792516064600319909,
250
+ -0.4243421202074387835736688885437880520964,
251
+ 0.4243421202074387835736688885437880520964,
252
+ -0.551618835887219807059018796724313286622,
253
+ 0.551618835887219807059018796724313286622,
254
+ -0.667138804197412319305966669990339162597,
255
+ 0.667138804197412319305966669990339162597,
256
+ -0.7684399634756779086158778513062280348209,
257
+ 0.7684399634756779086158778513062280348209,
258
+ -0.8533633645833172836472506385875676702761,
259
+ 0.8533633645833172836472506385875676702761,
260
+ -0.9200993341504008287901871337149688941591,
261
+ 0.9200993341504008287901871337149688941591,
262
+ -0.9672268385663062943166222149076951614246,
263
+ 0.9672268385663062943166222149076951614246,
264
+ -0.9937521706203895002602420359379409291933,
265
+ 0.9937521706203895002602420359379409291933,
266
+ ],
267
+ [
268
+ -0.0697392733197222212138417961186280818222,
269
+ 0.0697392733197222212138417961186280818222,
270
+ -0.2078604266882212854788465339195457342156,
271
+ 0.2078604266882212854788465339195457342156,
272
+ -0.3419358208920842251581474204273796195591,
273
+ 0.3419358208920842251581474204273796195591,
274
+ -0.4693558379867570264063307109664063460953,
275
+ 0.4693558379867570264063307109664063460953,
276
+ -0.5876404035069115929588769276386473488776,
277
+ 0.5876404035069115929588769276386473488776,
278
+ -0.6944872631866827800506898357622567712673,
279
+ 0.6944872631866827800506898357622567712673,
280
+ -0.7878168059792081620042779554083515213881,
281
+ 0.7878168059792081620042779554083515213881,
282
+ -0.8658125777203001365364256370193787290847,
283
+ 0.8658125777203001365364256370193787290847,
284
+ -0.9269567721871740005206929392590531966353,
285
+ 0.9269567721871740005206929392590531966353,
286
+ -0.9700604978354287271239509867652687108059,
287
+ 0.9700604978354287271239509867652687108059,
288
+ -0.994294585482399292073031421161298980393,
289
+ 0.994294585482399292073031421161298980393,
290
+ ],
291
+ [
292
+ 0, -0.1332568242984661109317426822417661370104,
293
+ 0.1332568242984661109317426822417661370104,
294
+ -0.264135680970344930533869538283309602979,
295
+ 0.264135680970344930533869538283309602979,
296
+ -0.390301038030290831421488872880605458578,
297
+ 0.390301038030290831421488872880605458578,
298
+ -0.5095014778460075496897930478668464305448,
299
+ 0.5095014778460075496897930478668464305448,
300
+ -0.6196098757636461563850973116495956533871,
301
+ 0.6196098757636461563850973116495956533871,
302
+ -0.7186613631319501944616244837486188483299,
303
+ 0.7186613631319501944616244837486188483299,
304
+ -0.8048884016188398921511184069967785579414,
305
+ 0.8048884016188398921511184069967785579414,
306
+ -0.8767523582704416673781568859341456716389,
307
+ 0.8767523582704416673781568859341456716389,
308
+ -0.9329710868260161023491969890384229782357,
309
+ 0.9329710868260161023491969890384229782357,
310
+ -0.9725424712181152319560240768207773751816,
311
+ 0.9725424712181152319560240768207773751816,
312
+ -0.9947693349975521235239257154455743605736,
313
+ 0.9947693349975521235239257154455743605736,
314
+ ],
315
+ [
316
+ -0.0640568928626056260850430826247450385909,
317
+ 0.0640568928626056260850430826247450385909,
318
+ -0.1911188674736163091586398207570696318404,
319
+ 0.1911188674736163091586398207570696318404,
320
+ -0.3150426796961633743867932913198102407864,
321
+ 0.3150426796961633743867932913198102407864,
322
+ -0.4337935076260451384870842319133497124524,
323
+ 0.4337935076260451384870842319133497124524,
324
+ -0.5454214713888395356583756172183723700107,
325
+ 0.5454214713888395356583756172183723700107,
326
+ -0.6480936519369755692524957869107476266696,
327
+ 0.6480936519369755692524957869107476266696,
328
+ -0.7401241915785543642438281030999784255232,
329
+ 0.7401241915785543642438281030999784255232,
330
+ -0.8200019859739029219539498726697452080761,
331
+ 0.8200019859739029219539498726697452080761,
332
+ -0.8864155270044010342131543419821967550873,
333
+ 0.8864155270044010342131543419821967550873,
334
+ -0.9382745520027327585236490017087214496548,
335
+ 0.9382745520027327585236490017087214496548,
336
+ -0.9747285559713094981983919930081690617411,
337
+ 0.9747285559713094981983919930081690617411,
338
+ -0.9951872199970213601799974097007368118745,
339
+ 0.9951872199970213601799974097007368118745,
340
+ ],
341
+ ];
342
+
343
+ // Legendre-Gauss weights (wi values, defined by a function linked to in the Bezier primer article)
344
+ export const cValues = [
345
+ [],
346
+ [],
347
+ [1.0, 1.0],
348
+ [
349
+ 0.8888888888888888888888888888888888888888,
350
+ 0.5555555555555555555555555555555555555555,
351
+ 0.5555555555555555555555555555555555555555,
352
+ ],
353
+ [
354
+ 0.6521451548625461426269360507780005927646,
355
+ 0.6521451548625461426269360507780005927646,
356
+ 0.3478548451374538573730639492219994072353,
357
+ 0.3478548451374538573730639492219994072353,
358
+ ],
359
+ [
360
+ 0.5688888888888888888888888888888888888888,
361
+ 0.4786286704993664680412915148356381929122,
362
+ 0.4786286704993664680412915148356381929122,
363
+ 0.2369268850561890875142640407199173626432,
364
+ 0.2369268850561890875142640407199173626432,
365
+ ],
366
+ [
367
+ 0.3607615730481386075698335138377161116615,
368
+ 0.3607615730481386075698335138377161116615,
369
+ 0.4679139345726910473898703439895509948116,
370
+ 0.4679139345726910473898703439895509948116,
371
+ 0.1713244923791703450402961421727328935268,
372
+ 0.1713244923791703450402961421727328935268,
373
+ ],
374
+ [
375
+ 0.4179591836734693877551020408163265306122,
376
+ 0.3818300505051189449503697754889751338783,
377
+ 0.3818300505051189449503697754889751338783,
378
+ 0.2797053914892766679014677714237795824869,
379
+ 0.2797053914892766679014677714237795824869,
380
+ 0.1294849661688696932706114326790820183285,
381
+ 0.1294849661688696932706114326790820183285,
382
+ ],
383
+ [
384
+ 0.3626837833783619829651504492771956121941,
385
+ 0.3626837833783619829651504492771956121941,
386
+ 0.3137066458778872873379622019866013132603,
387
+ 0.3137066458778872873379622019866013132603,
388
+ 0.2223810344533744705443559944262408844301,
389
+ 0.2223810344533744705443559944262408844301,
390
+ 0.1012285362903762591525313543099621901153,
391
+ 0.1012285362903762591525313543099621901153,
392
+ ],
393
+ [
394
+ 0.3302393550012597631645250692869740488788,
395
+ 0.1806481606948574040584720312429128095143,
396
+ 0.1806481606948574040584720312429128095143,
397
+ 0.0812743883615744119718921581105236506756,
398
+ 0.0812743883615744119718921581105236506756,
399
+ 0.3123470770400028400686304065844436655987,
400
+ 0.3123470770400028400686304065844436655987,
401
+ 0.2606106964029354623187428694186328497718,
402
+ 0.2606106964029354623187428694186328497718,
403
+ ],
404
+ [
405
+ 0.295524224714752870173892994651338329421,
406
+ 0.295524224714752870173892994651338329421,
407
+ 0.2692667193099963550912269215694693528597,
408
+ 0.2692667193099963550912269215694693528597,
409
+ 0.2190863625159820439955349342281631924587,
410
+ 0.2190863625159820439955349342281631924587,
411
+ 0.1494513491505805931457763396576973324025,
412
+ 0.1494513491505805931457763396576973324025,
413
+ 0.0666713443086881375935688098933317928578,
414
+ 0.0666713443086881375935688098933317928578,
415
+ ],
416
+ [
417
+ 0.272925086777900630714483528336342189156,
418
+ 0.2628045445102466621806888698905091953727,
419
+ 0.2628045445102466621806888698905091953727,
420
+ 0.2331937645919904799185237048431751394317,
421
+ 0.2331937645919904799185237048431751394317,
422
+ 0.1862902109277342514260976414316558916912,
423
+ 0.1862902109277342514260976414316558916912,
424
+ 0.1255803694649046246346942992239401001976,
425
+ 0.1255803694649046246346942992239401001976,
426
+ 0.0556685671161736664827537204425485787285,
427
+ 0.0556685671161736664827537204425485787285,
428
+ ],
429
+ [
430
+ 0.2491470458134027850005624360429512108304,
431
+ 0.2491470458134027850005624360429512108304,
432
+ 0.2334925365383548087608498989248780562594,
433
+ 0.2334925365383548087608498989248780562594,
434
+ 0.2031674267230659217490644558097983765065,
435
+ 0.2031674267230659217490644558097983765065,
436
+ 0.160078328543346226334652529543359071872,
437
+ 0.160078328543346226334652529543359071872,
438
+ 0.1069393259953184309602547181939962242145,
439
+ 0.1069393259953184309602547181939962242145,
440
+ 0.047175336386511827194615961485017060317,
441
+ 0.047175336386511827194615961485017060317,
442
+ ],
443
+ [
444
+ 0.2325515532308739101945895152688359481566,
445
+ 0.2262831802628972384120901860397766184347,
446
+ 0.2262831802628972384120901860397766184347,
447
+ 0.2078160475368885023125232193060527633865,
448
+ 0.2078160475368885023125232193060527633865,
449
+ 0.1781459807619457382800466919960979955128,
450
+ 0.1781459807619457382800466919960979955128,
451
+ 0.1388735102197872384636017768688714676218,
452
+ 0.1388735102197872384636017768688714676218,
453
+ 0.0921214998377284479144217759537971209236,
454
+ 0.0921214998377284479144217759537971209236,
455
+ 0.0404840047653158795200215922009860600419,
456
+ 0.0404840047653158795200215922009860600419,
457
+ ],
458
+ [
459
+ 0.2152638534631577901958764433162600352749,
460
+ 0.2152638534631577901958764433162600352749,
461
+ 0.2051984637212956039659240656612180557103,
462
+ 0.2051984637212956039659240656612180557103,
463
+ 0.1855383974779378137417165901251570362489,
464
+ 0.1855383974779378137417165901251570362489,
465
+ 0.1572031671581935345696019386238421566056,
466
+ 0.1572031671581935345696019386238421566056,
467
+ 0.1215185706879031846894148090724766259566,
468
+ 0.1215185706879031846894148090724766259566,
469
+ 0.0801580871597602098056332770628543095836,
470
+ 0.0801580871597602098056332770628543095836,
471
+ 0.0351194603317518630318328761381917806197,
472
+ 0.0351194603317518630318328761381917806197,
473
+ ],
474
+ [
475
+ 0.2025782419255612728806201999675193148386,
476
+ 0.1984314853271115764561183264438393248186,
477
+ 0.1984314853271115764561183264438393248186,
478
+ 0.1861610000155622110268005618664228245062,
479
+ 0.1861610000155622110268005618664228245062,
480
+ 0.1662692058169939335532008604812088111309,
481
+ 0.1662692058169939335532008604812088111309,
482
+ 0.1395706779261543144478047945110283225208,
483
+ 0.1395706779261543144478047945110283225208,
484
+ 0.1071592204671719350118695466858693034155,
485
+ 0.1071592204671719350118695466858693034155,
486
+ 0.0703660474881081247092674164506673384667,
487
+ 0.0703660474881081247092674164506673384667,
488
+ 0.0307532419961172683546283935772044177217,
489
+ 0.0307532419961172683546283935772044177217,
490
+ ],
491
+ [
492
+ 0.1894506104550684962853967232082831051469,
493
+ 0.1894506104550684962853967232082831051469,
494
+ 0.1826034150449235888667636679692199393835,
495
+ 0.1826034150449235888667636679692199393835,
496
+ 0.1691565193950025381893120790303599622116,
497
+ 0.1691565193950025381893120790303599622116,
498
+ 0.1495959888165767320815017305474785489704,
499
+ 0.1495959888165767320815017305474785489704,
500
+ 0.1246289712555338720524762821920164201448,
501
+ 0.1246289712555338720524762821920164201448,
502
+ 0.0951585116824927848099251076022462263552,
503
+ 0.0951585116824927848099251076022462263552,
504
+ 0.0622535239386478928628438369943776942749,
505
+ 0.0622535239386478928628438369943776942749,
506
+ 0.0271524594117540948517805724560181035122,
507
+ 0.0271524594117540948517805724560181035122,
508
+ ],
509
+ [
510
+ 0.1794464703562065254582656442618856214487,
511
+ 0.1765627053669926463252709901131972391509,
512
+ 0.1765627053669926463252709901131972391509,
513
+ 0.1680041021564500445099706637883231550211,
514
+ 0.1680041021564500445099706637883231550211,
515
+ 0.1540457610768102880814315948019586119404,
516
+ 0.1540457610768102880814315948019586119404,
517
+ 0.1351363684685254732863199817023501973721,
518
+ 0.1351363684685254732863199817023501973721,
519
+ 0.1118838471934039710947883856263559267358,
520
+ 0.1118838471934039710947883856263559267358,
521
+ 0.0850361483171791808835353701910620738504,
522
+ 0.0850361483171791808835353701910620738504,
523
+ 0.0554595293739872011294401653582446605128,
524
+ 0.0554595293739872011294401653582446605128,
525
+ 0.0241483028685479319601100262875653246916,
526
+ 0.0241483028685479319601100262875653246916,
527
+ ],
528
+ [
529
+ 0.1691423829631435918406564701349866103341,
530
+ 0.1691423829631435918406564701349866103341,
531
+ 0.1642764837458327229860537764659275904123,
532
+ 0.1642764837458327229860537764659275904123,
533
+ 0.1546846751262652449254180038363747721932,
534
+ 0.1546846751262652449254180038363747721932,
535
+ 0.1406429146706506512047313037519472280955,
536
+ 0.1406429146706506512047313037519472280955,
537
+ 0.1225552067114784601845191268002015552281,
538
+ 0.1225552067114784601845191268002015552281,
539
+ 0.1009420441062871655628139849248346070628,
540
+ 0.1009420441062871655628139849248346070628,
541
+ 0.0764257302548890565291296776166365256053,
542
+ 0.0764257302548890565291296776166365256053,
543
+ 0.0497145488949697964533349462026386416808,
544
+ 0.0497145488949697964533349462026386416808,
545
+ 0.0216160135264833103133427102664524693876,
546
+ 0.0216160135264833103133427102664524693876,
547
+ ],
548
+ [
549
+ 0.1610544498487836959791636253209167350399,
550
+ 0.1589688433939543476499564394650472016787,
551
+ 0.1589688433939543476499564394650472016787,
552
+ 0.152766042065859666778855400897662998461,
553
+ 0.152766042065859666778855400897662998461,
554
+ 0.1426067021736066117757461094419029724756,
555
+ 0.1426067021736066117757461094419029724756,
556
+ 0.1287539625393362276755157848568771170558,
557
+ 0.1287539625393362276755157848568771170558,
558
+ 0.1115666455473339947160239016817659974813,
559
+ 0.1115666455473339947160239016817659974813,
560
+ 0.0914900216224499994644620941238396526609,
561
+ 0.0914900216224499994644620941238396526609,
562
+ 0.0690445427376412265807082580060130449618,
563
+ 0.0690445427376412265807082580060130449618,
564
+ 0.0448142267656996003328381574019942119517,
565
+ 0.0448142267656996003328381574019942119517,
566
+ 0.0194617882297264770363120414644384357529,
567
+ 0.0194617882297264770363120414644384357529,
568
+ ],
569
+ [
570
+ 0.1527533871307258506980843319550975934919,
571
+ 0.1527533871307258506980843319550975934919,
572
+ 0.1491729864726037467878287370019694366926,
573
+ 0.1491729864726037467878287370019694366926,
574
+ 0.1420961093183820513292983250671649330345,
575
+ 0.1420961093183820513292983250671649330345,
576
+ 0.1316886384491766268984944997481631349161,
577
+ 0.1316886384491766268984944997481631349161,
578
+ 0.118194531961518417312377377711382287005,
579
+ 0.118194531961518417312377377711382287005,
580
+ 0.1019301198172404350367501354803498761666,
581
+ 0.1019301198172404350367501354803498761666,
582
+ 0.0832767415767047487247581432220462061001,
583
+ 0.0832767415767047487247581432220462061001,
584
+ 0.0626720483341090635695065351870416063516,
585
+ 0.0626720483341090635695065351870416063516,
586
+ 0.040601429800386941331039952274932109879,
587
+ 0.040601429800386941331039952274932109879,
588
+ 0.0176140071391521183118619623518528163621,
589
+ 0.0176140071391521183118619623518528163621,
590
+ ],
591
+ [
592
+ 0.1460811336496904271919851476833711882448,
593
+ 0.1445244039899700590638271665537525436099,
594
+ 0.1445244039899700590638271665537525436099,
595
+ 0.1398873947910731547221334238675831108927,
596
+ 0.1398873947910731547221334238675831108927,
597
+ 0.132268938633337461781052574496775604329,
598
+ 0.132268938633337461781052574496775604329,
599
+ 0.1218314160537285341953671771257335983563,
600
+ 0.1218314160537285341953671771257335983563,
601
+ 0.1087972991671483776634745780701056420336,
602
+ 0.1087972991671483776634745780701056420336,
603
+ 0.0934444234560338615532897411139320884835,
604
+ 0.0934444234560338615532897411139320884835,
605
+ 0.0761001136283793020170516533001831792261,
606
+ 0.0761001136283793020170516533001831792261,
607
+ 0.0571344254268572082836358264724479574912,
608
+ 0.0571344254268572082836358264724479574912,
609
+ 0.0369537897708524937999506682993296661889,
610
+ 0.0369537897708524937999506682993296661889,
611
+ 0.0160172282577743333242246168584710152658,
612
+ 0.0160172282577743333242246168584710152658,
613
+ ],
614
+ [
615
+ 0.1392518728556319933754102483418099578739,
616
+ 0.1392518728556319933754102483418099578739,
617
+ 0.1365414983460151713525738312315173965863,
618
+ 0.1365414983460151713525738312315173965863,
619
+ 0.1311735047870623707329649925303074458757,
620
+ 0.1311735047870623707329649925303074458757,
621
+ 0.1232523768105124242855609861548144719594,
622
+ 0.1232523768105124242855609861548144719594,
623
+ 0.1129322960805392183934006074217843191142,
624
+ 0.1129322960805392183934006074217843191142,
625
+ 0.1004141444428809649320788378305362823508,
626
+ 0.1004141444428809649320788378305362823508,
627
+ 0.0859416062170677274144436813727028661891,
628
+ 0.0859416062170677274144436813727028661891,
629
+ 0.0697964684245204880949614189302176573987,
630
+ 0.0697964684245204880949614189302176573987,
631
+ 0.0522933351526832859403120512732112561121,
632
+ 0.0522933351526832859403120512732112561121,
633
+ 0.0337749015848141547933022468659129013491,
634
+ 0.0337749015848141547933022468659129013491,
635
+ 0.0146279952982722006849910980471854451902,
636
+ 0.0146279952982722006849910980471854451902,
637
+ ],
638
+ [
639
+ 0.1336545721861061753514571105458443385831,
640
+ 0.132462039404696617371642464703316925805,
641
+ 0.132462039404696617371642464703316925805,
642
+ 0.1289057221880821499785953393997936532597,
643
+ 0.1289057221880821499785953393997936532597,
644
+ 0.1230490843067295304675784006720096548158,
645
+ 0.1230490843067295304675784006720096548158,
646
+ 0.1149966402224113649416435129339613014914,
647
+ 0.1149966402224113649416435129339613014914,
648
+ 0.1048920914645414100740861850147438548584,
649
+ 0.1048920914645414100740861850147438548584,
650
+ 0.0929157660600351474770186173697646486034,
651
+ 0.0929157660600351474770186173697646486034,
652
+ 0.0792814117767189549228925247420432269137,
653
+ 0.0792814117767189549228925247420432269137,
654
+ 0.0642324214085258521271696151589109980391,
655
+ 0.0642324214085258521271696151589109980391,
656
+ 0.0480376717310846685716410716320339965612,
657
+ 0.0480376717310846685716410716320339965612,
658
+ 0.0309880058569794443106942196418845053837,
659
+ 0.0309880058569794443106942196418845053837,
660
+ 0.0134118594871417720813094934586150649766,
661
+ 0.0134118594871417720813094934586150649766,
662
+ ],
663
+ [
664
+ 0.1279381953467521569740561652246953718517,
665
+ 0.1279381953467521569740561652246953718517,
666
+ 0.1258374563468282961213753825111836887264,
667
+ 0.1258374563468282961213753825111836887264,
668
+ 0.121670472927803391204463153476262425607,
669
+ 0.121670472927803391204463153476262425607,
670
+ 0.1155056680537256013533444839067835598622,
671
+ 0.1155056680537256013533444839067835598622,
672
+ 0.1074442701159656347825773424466062227946,
673
+ 0.1074442701159656347825773424466062227946,
674
+ 0.0976186521041138882698806644642471544279,
675
+ 0.0976186521041138882698806644642471544279,
676
+ 0.086190161531953275917185202983742667185,
677
+ 0.086190161531953275917185202983742667185,
678
+ 0.0733464814110803057340336152531165181193,
679
+ 0.0733464814110803057340336152531165181193,
680
+ 0.0592985849154367807463677585001085845412,
681
+ 0.0592985849154367807463677585001085845412,
682
+ 0.0442774388174198061686027482113382288593,
683
+ 0.0442774388174198061686027482113382288593,
684
+ 0.0285313886289336631813078159518782864491,
685
+ 0.0285313886289336631813078159518782864491,
686
+ 0.0123412297999871995468056670700372915759,
687
+ 0.0123412297999871995468056670700372915759,
688
+ ],
689
+ ];
690
+
691
+ // LUT for binomial coefficient arrays per curve order 'n'
692
+ export const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];
693
+
694
+ export const getCubicArcLength = (xs: number[], ys: number[], t: number) => {
695
+ let sum: number;
696
+ let correctedT: number;
697
+
698
+ /*if (xs.length >= tValues.length) {
699
+ throw new Error('too high n bezier');
700
+ }*/
701
+
702
+ const n = 20;
703
+
704
+ const z = t / 2;
705
+ sum = 0;
706
+ for (let i = 0; i < n; i++) {
707
+ correctedT = z * tValues[n][i] + z;
708
+ sum += cValues[n][i] * BFunc(xs, ys, correctedT);
709
+ }
710
+ return z * sum;
711
+ };
712
+
713
+ export const getQuadraticArcLength = (
714
+ xs: number[],
715
+ ys: number[],
716
+ t: number
717
+ ) => {
718
+ if (t === undefined) {
719
+ t = 1;
720
+ }
721
+ const ax = xs[0] - 2 * xs[1] + xs[2];
722
+ const ay = ys[0] - 2 * ys[1] + ys[2];
723
+ const bx = 2 * xs[1] - 2 * xs[0];
724
+ const by = 2 * ys[1] - 2 * ys[0];
725
+
726
+ const A = 4 * (ax * ax + ay * ay);
727
+ const B = 4 * (ax * bx + ay * by);
728
+ const C = bx * bx + by * by;
729
+
730
+ if (A === 0) {
731
+ return (
732
+ t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2))
733
+ );
734
+ }
735
+ const b = B / (2 * A);
736
+ const c = C / A;
737
+ const u = t + b;
738
+ const k = c - b * b;
739
+
740
+ const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;
741
+ const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;
742
+ const term =
743
+ b + Math.sqrt(b * b + k) !== 0
744
+ ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))
745
+ : 0;
746
+
747
+ return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);
748
+ };
749
+
750
+ function BFunc(xs: number[], ys: number[], t: number) {
751
+ const xbase = getDerivative(1, t, xs);
752
+ const ybase = getDerivative(1, t, ys);
753
+ const combined = xbase * xbase + ybase * ybase;
754
+ return Math.sqrt(combined);
755
+ }
756
+
757
+ /**
758
+ * Compute the curve derivative (hodograph) at t.
759
+ */
760
+ const getDerivative = (derivative: number, t: number, vs: number[]): number => {
761
+ // the derivative of any 't'-less function is zero.
762
+ const n = vs.length - 1;
763
+ let _vs;
764
+ let value;
765
+
766
+ if (n === 0) {
767
+ return 0;
768
+ }
769
+
770
+ // direct values? compute!
771
+ if (derivative === 0) {
772
+ value = 0;
773
+ for (let k = 0; k <= n; k++) {
774
+ value +=
775
+ binomialCoefficients[n][k] *
776
+ Math.pow(1 - t, n - k) *
777
+ Math.pow(t, k) *
778
+ vs[k];
779
+ }
780
+ return value;
781
+ } else {
782
+ // Still some derivative? go down one order, then try
783
+ // for the lower order curve's.
784
+ _vs = new Array(n);
785
+ for (let k = 0; k < n; k++) {
786
+ _vs[k] = n * (vs[k + 1] - vs[k]);
787
+ }
788
+ return getDerivative(derivative - 1, t, _vs);
789
+ }
790
+ };
791
+
792
+ export const t2length = (
793
+ length: number,
794
+ totalLength: number,
795
+ func: (t: number) => number
796
+ ): number => {
797
+ let error = 1;
798
+ let t = length / totalLength;
799
+ let step = (length - func(t)) / totalLength;
800
+
801
+ let numIterations = 0;
802
+ while (error > 0.001) {
803
+ const increasedTLength = func(t + step);
804
+ const increasedTError = Math.abs(length - increasedTLength) / totalLength;
805
+ if (increasedTError < error) {
806
+ error = increasedTError;
807
+ t += step;
808
+ } else {
809
+ const decreasedTLength = func(t - step);
810
+ const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;
811
+ if (decreasedTError < error) {
812
+ error = decreasedTError;
813
+ t -= step;
814
+ } else {
815
+ step /= 2;
816
+ }
817
+ }
818
+
819
+ numIterations++;
820
+ if (numIterations > 500) {
821
+ break;
822
+ }
823
+ }
824
+
825
+ return t;
826
+ };