curvy 1.0.9 → 2.0.0-alpha.2

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 (173) hide show
  1. package/dist/characteristic/index.d.mts +88 -0
  2. package/dist/characteristic/index.mjs +2 -0
  3. package/dist/curve/index.d.mts +2 -0
  4. package/dist/curve/index.mjs +2 -0
  5. package/dist/interval/index.d.mts +3 -0
  6. package/dist/interval/index.mjs +3 -0
  7. package/dist/matrix/index.d.mts +2 -0
  8. package/dist/matrix/index.mjs +267 -0
  9. package/dist/matrix/index.mjs.map +1 -0
  10. package/dist/number.d.mts +280 -0
  11. package/dist/number.mjs +140 -0
  12. package/dist/number.mjs.map +1 -0
  13. package/dist/path/index.d.mts +261 -0
  14. package/dist/path/index.mjs +325 -0
  15. package/dist/path/index.mjs.map +1 -0
  16. package/dist/polynomial/index.d.mts +2 -0
  17. package/dist/polynomial/index.mjs +3 -0
  18. package/dist/shared/characteristic-B9nCh_cx.mjs +104 -0
  19. package/dist/shared/characteristic-B9nCh_cx.mjs.map +1 -0
  20. package/dist/shared/chunk-25Hzd3z8.mjs +13 -0
  21. package/dist/shared/cubic-BajUY0JT.d.mts +1100 -0
  22. package/dist/shared/cubic-CpHAx8cC.mjs +479 -0
  23. package/dist/shared/cubic-CpHAx8cC.mjs.map +1 -0
  24. package/dist/shared/interval-05CR6eBf.mjs +421 -0
  25. package/dist/shared/interval-05CR6eBf.mjs.map +1 -0
  26. package/dist/shared/interval-Dy-RMEE3.d.mts +533 -0
  27. package/dist/shared/interval2d-8IBZnUOq.mjs +108 -0
  28. package/dist/shared/interval2d-8IBZnUOq.mjs.map +1 -0
  29. package/dist/shared/interval2d-C2id9u31.d.mts +172 -0
  30. package/dist/shared/matrix4x4-Ck2WROK-.mjs +440 -0
  31. package/dist/shared/matrix4x4-Ck2WROK-.mjs.map +1 -0
  32. package/dist/shared/matrix4x4-Dm_tSiH1.d.mts +1183 -0
  33. package/dist/shared/quadratic-CamozcFc.mjs +330 -0
  34. package/dist/shared/quadratic-CamozcFc.mjs.map +1 -0
  35. package/dist/shared/rationalCubic2d-B6g97ryJ.d.mts +308 -0
  36. package/dist/shared/rationalCubic2d-BEgUGSFf.mjs +295 -0
  37. package/dist/shared/rationalCubic2d-BEgUGSFf.mjs.map +1 -0
  38. package/dist/shared/rationalCubic2d-Bys2Uory.mjs +695 -0
  39. package/dist/shared/rationalCubic2d-Bys2Uory.mjs.map +1 -0
  40. package/dist/shared/rationalCubic2d-DlQfBURs.d.mts +818 -0
  41. package/dist/shared/solution-CrtLfqEq.mjs +306 -0
  42. package/dist/shared/solution-CrtLfqEq.mjs.map +1 -0
  43. package/dist/shared/solution-sNQ-ZVhN.d.mts +251 -0
  44. package/dist/{pipe.d.mts → shared/utils-MCckigYk.d.mts} +44 -26
  45. package/dist/shared/vector2-CL1HDdPr.mjs +187 -0
  46. package/dist/shared/vector2-CL1HDdPr.mjs.map +1 -0
  47. package/dist/shared/vector2-DPUY3_eA.d.mts +470 -0
  48. package/dist/shared/vector2.internal-DU_E808S.mjs +97 -0
  49. package/dist/shared/vector2.internal-DU_E808S.mjs.map +1 -0
  50. package/dist/shared/vector3-D-tv_aKL.mjs +204 -0
  51. package/dist/shared/vector3-D-tv_aKL.mjs.map +1 -0
  52. package/dist/shared/vector3-DqeOZtOB.d.mts +703 -0
  53. package/dist/shared/vector4-5KbjoHVj.mjs +109 -0
  54. package/dist/shared/vector4-5KbjoHVj.mjs.map +1 -0
  55. package/dist/shared/vector4.internal-5XcaX12X.mjs +163 -0
  56. package/dist/shared/vector4.internal-5XcaX12X.mjs.map +1 -0
  57. package/dist/solution/index.d.mts +2 -0
  58. package/dist/solution/index.mjs +2 -0
  59. package/dist/splines/index.d.mts +701 -0
  60. package/dist/splines/index.mjs +734 -0
  61. package/dist/splines/index.mjs.map +1 -0
  62. package/dist/utils.d.mts +2 -205
  63. package/dist/utils.mjs +88 -52
  64. package/dist/utils.mjs.map +1 -1
  65. package/dist/vector/index.d.mts +3 -0
  66. package/dist/vector/index.mjs +4 -0
  67. package/package.json +49 -92
  68. package/dist/curve/cubic2d.d.mts +0 -109
  69. package/dist/curve/cubic2d.d.ts +0 -109
  70. package/dist/curve/cubic2d.mjs +0 -80
  71. package/dist/curve/cubic2d.mjs.map +0 -1
  72. package/dist/curve/linear2d.d.mts +0 -94
  73. package/dist/curve/linear2d.d.ts +0 -94
  74. package/dist/curve/linear2d.mjs +0 -46
  75. package/dist/curve/linear2d.mjs.map +0 -1
  76. package/dist/curve/quadratic2d.d.mts +0 -117
  77. package/dist/curve/quadratic2d.d.ts +0 -117
  78. package/dist/curve/quadratic2d.mjs +0 -82
  79. package/dist/curve/quadratic2d.mjs.map +0 -1
  80. package/dist/interval.d.mts +0 -251
  81. package/dist/interval.d.ts +0 -251
  82. package/dist/interval.mjs +0 -86
  83. package/dist/interval.mjs.map +0 -1
  84. package/dist/matrix/matrix2x2.d.mts +0 -320
  85. package/dist/matrix/matrix2x2.d.ts +0 -320
  86. package/dist/matrix/matrix2x2.mjs +0 -25
  87. package/dist/matrix/matrix2x2.mjs.map +0 -1
  88. package/dist/matrix/matrix3x3.d.mts +0 -370
  89. package/dist/matrix/matrix3x3.d.ts +0 -370
  90. package/dist/matrix/matrix3x3.mjs +0 -28
  91. package/dist/matrix/matrix3x3.mjs.map +0 -1
  92. package/dist/matrix/matrix4x4.d.mts +0 -381
  93. package/dist/matrix/matrix4x4.d.ts +0 -381
  94. package/dist/matrix/matrix4x4.mjs +0 -178
  95. package/dist/matrix/matrix4x4.mjs.map +0 -1
  96. package/dist/path/cubic2d.d.mts +0 -95
  97. package/dist/path/cubic2d.d.ts +0 -95
  98. package/dist/path/cubic2d.mjs +0 -60
  99. package/dist/path/cubic2d.mjs.map +0 -1
  100. package/dist/path/linear2d.d.mts +0 -95
  101. package/dist/path/linear2d.d.ts +0 -95
  102. package/dist/path/linear2d.mjs +0 -53
  103. package/dist/path/linear2d.mjs.map +0 -1
  104. package/dist/path/quadratic2d.d.mts +0 -95
  105. package/dist/path/quadratic2d.d.ts +0 -95
  106. package/dist/path/quadratic2d.mjs +0 -57
  107. package/dist/path/quadratic2d.mjs.map +0 -1
  108. package/dist/pipe.d.ts +0 -58
  109. package/dist/pipe.mjs +0 -92
  110. package/dist/pipe.mjs.map +0 -1
  111. package/dist/polynomial/cubic.d.mts +0 -7
  112. package/dist/polynomial/cubic.d.ts +0 -7
  113. package/dist/polynomial/cubic.mjs +0 -133
  114. package/dist/polynomial/cubic.mjs.map +0 -1
  115. package/dist/polynomial/linear.d.mts +0 -7
  116. package/dist/polynomial/linear.d.ts +0 -7
  117. package/dist/polynomial/linear.mjs +0 -24
  118. package/dist/polynomial/linear.mjs.map +0 -1
  119. package/dist/polynomial/quadratic.d.mts +0 -7
  120. package/dist/polynomial/quadratic.d.ts +0 -7
  121. package/dist/polynomial/quadratic.mjs +0 -27
  122. package/dist/polynomial/quadratic.mjs.map +0 -1
  123. package/dist/shared/curvy.Bf5TIk31.d.mts +0 -22
  124. package/dist/shared/curvy.Bf5TIk31.d.ts +0 -22
  125. package/dist/shared/curvy.BkkW8Tx9.mjs +0 -102
  126. package/dist/shared/curvy.BkkW8Tx9.mjs.map +0 -1
  127. package/dist/shared/curvy.BxdGW9he.mjs +0 -116
  128. package/dist/shared/curvy.BxdGW9he.mjs.map +0 -1
  129. package/dist/shared/curvy.C_sCeg9J.mjs +0 -66
  130. package/dist/shared/curvy.C_sCeg9J.mjs.map +0 -1
  131. package/dist/shared/curvy.Cg8lZVUz.d.ts +0 -688
  132. package/dist/shared/curvy.DCt1gGII.mjs +0 -147
  133. package/dist/shared/curvy.DCt1gGII.mjs.map +0 -1
  134. package/dist/shared/curvy.DJ4xO0al.mjs +0 -63
  135. package/dist/shared/curvy.DJ4xO0al.mjs.map +0 -1
  136. package/dist/shared/curvy.DmVFTi0N.mjs +0 -35
  137. package/dist/shared/curvy.DmVFTi0N.mjs.map +0 -1
  138. package/dist/shared/curvy.FDaj5rlj.d.mts +0 -688
  139. package/dist/shared/curvy.lktriTpx.mjs +0 -101
  140. package/dist/shared/curvy.lktriTpx.mjs.map +0 -1
  141. package/dist/shared/curvy.mLFprrGm.mjs +0 -85
  142. package/dist/shared/curvy.mLFprrGm.mjs.map +0 -1
  143. package/dist/shared/curvy.r6f1j287.mjs +0 -76
  144. package/dist/shared/curvy.r6f1j287.mjs.map +0 -1
  145. package/dist/splines/basis2d.d.mts +0 -130
  146. package/dist/splines/basis2d.d.ts +0 -130
  147. package/dist/splines/basis2d.mjs +0 -90
  148. package/dist/splines/basis2d.mjs.map +0 -1
  149. package/dist/splines/bezier2d.d.mts +0 -182
  150. package/dist/splines/bezier2d.d.ts +0 -182
  151. package/dist/splines/bezier2d.mjs +0 -23
  152. package/dist/splines/bezier2d.mjs.map +0 -1
  153. package/dist/splines/cardinal2d.d.mts +0 -178
  154. package/dist/splines/cardinal2d.d.ts +0 -178
  155. package/dist/splines/cardinal2d.mjs +0 -114
  156. package/dist/splines/cardinal2d.mjs.map +0 -1
  157. package/dist/splines/hermite2d.d.mts +0 -124
  158. package/dist/splines/hermite2d.d.ts +0 -124
  159. package/dist/splines/hermite2d.mjs +0 -63
  160. package/dist/splines/hermite2d.mjs.map +0 -1
  161. package/dist/utils.d.ts +0 -205
  162. package/dist/vector/vector2.d.mts +0 -324
  163. package/dist/vector/vector2.d.ts +0 -324
  164. package/dist/vector/vector2.mjs +0 -30
  165. package/dist/vector/vector2.mjs.map +0 -1
  166. package/dist/vector/vector3.d.mts +0 -417
  167. package/dist/vector/vector3.d.ts +0 -417
  168. package/dist/vector/vector3.mjs +0 -38
  169. package/dist/vector/vector3.mjs.map +0 -1
  170. package/dist/vector/vector4.d.mts +0 -205
  171. package/dist/vector/vector4.d.ts +0 -205
  172. package/dist/vector/vector4.mjs +0 -20
  173. package/dist/vector/vector4.mjs.map +0 -1
@@ -1,101 +0,0 @@
1
- import { o as toThreeDimensionalIndex, d as determinant$1, m as make$2 } from './curvy.BkkW8Tx9.mjs';
2
- import { dual, Pipeable } from '../pipe.mjs';
3
- import { round, invariant } from '../utils.mjs';
4
- import { m as make$1, b as components, d as dot } from './curvy.mLFprrGm.mjs';
5
-
6
- var _a;
7
- const Matrix3x3TypeId = Symbol.for("curvy/matrix3x3");
8
- class Matrix3x3Impl extends Pipeable {
9
- constructor(m00 = 0, m01 = 0, m02 = 0, m10 = 0, m11 = 0, m12 = 0, m20 = 0, m21 = 0, m22 = 0) {
10
- super();
11
- this[_a] = Matrix3x3TypeId;
12
- this.m00 = round(m00);
13
- this.m01 = round(m01);
14
- this.m02 = round(m02);
15
- this.m10 = round(m10);
16
- this.m11 = round(m11);
17
- this.m12 = round(m12);
18
- this.m20 = round(m20);
19
- this.m21 = round(m21);
20
- this.m22 = round(m22);
21
- }
22
- get [(_a = Matrix3x3TypeId, Symbol.toStringTag)]() {
23
- return `Matrix3x3(${this.m00}, ${this.m01}, ${this.m02}, ${this.m10}, ${this.m11}, ${this.m12}, ${this.m20}, ${this.m21}, ${this.m22})`;
24
- }
25
- get [Symbol.for("nodejs.util.inspect.custom")]() {
26
- return `Matrix3x3(${this.m00}, ${this.m01}, ${this.m02}, ${this.m10}, ${this.m11}, ${this.m12}, ${this.m20}, ${this.m21}, ${this.m22})`;
27
- }
28
- [Symbol.hasInstance](m) {
29
- return isMatrix3x3(m);
30
- }
31
- }
32
- const isMatrix3x3 = (m) => typeof m === "object" && m !== null && Matrix3x3TypeId in m;
33
- const make = (m00 = 0, m01 = m00, m02 = m01, m10 = m02, m11 = m10, m12 = m11, m20 = m12, m21 = m20, m22 = m21) => {
34
- return new Matrix3x3Impl(m00, m01, m02, m10, m11, m12, m20, m21, m22);
35
- };
36
- const fromRows = (v0, v1, v2) => new Matrix3x3Impl(v0.x, v0.y, v0.z, v1.x, v1.y, v1.z, v2.x, v2.y, v2.z);
37
- const fromColumns = (v0, v1, v2) => new Matrix3x3Impl(v0.x, v1.x, v2.x, v0.y, v1.y, v2.y, v0.z, v1.z, v2.z);
38
- const setRow = dual(
39
- 3,
40
- (m, row, v) => fromRows(...toRows(m).with(toThreeDimensionalIndex(row), v))
41
- );
42
- const setColumn = dual(
43
- 3,
44
- (m, column, v) => fromColumns(
45
- ...toColumns(m).with(toThreeDimensionalIndex(column), v)
46
- )
47
- );
48
- const determinant = (m) => round(
49
- m.m00 * determinant$1(minor(m, 0, 0)) - m.m01 * determinant$1(minor(m, 0, 1)) + m.m02 * determinant$1(minor(m, 0, 2))
50
- );
51
- const minor = dual(3, (m, row, column) => {
52
- const [v0, v1] = toRows(m).toSpliced(toThreeDimensionalIndex(row), 1);
53
- const columnIndex = toThreeDimensionalIndex(column);
54
- const [m00, m01] = components(v0).toSpliced(columnIndex, 1);
55
- const [m10, m11] = components(v1).toSpliced(columnIndex, 1);
56
- return make$2(m00, m01, m10, m11);
57
- });
58
- const vectorProductLeft = dual(2, (m, v) => {
59
- const [v0, v1, v2] = toRows(m);
60
- return make$1(dot(v0, v), dot(v1, v), dot(v2, v));
61
- });
62
- const vectorProductRight = dual(2, (m, v) => {
63
- const [v0, v1, v2] = toColumns(m);
64
- return make$1(dot(v, v0), dot(v, v1), dot(v, v2));
65
- });
66
- const solveSystem = dual(2, (m, v) => {
67
- const inverseDeterminant = 1 / determinant(m);
68
- invariant(
69
- Number.isFinite(inverseDeterminant),
70
- "cannot solve system when coefficient matrix determinant is zero"
71
- );
72
- return make$1(
73
- determinant(setColumn(m, 0, v)) * inverseDeterminant,
74
- determinant(setColumn(m, 1, v)) * inverseDeterminant,
75
- determinant(setColumn(m, 2, v)) * inverseDeterminant
76
- );
77
- });
78
- const toRows = (m) => [
79
- make$1(m.m00, m.m01, m.m02),
80
- make$1(m.m10, m.m11, m.m12),
81
- make$1(m.m20, m.m21, m.m22)
82
- ];
83
- const toColumns = (m) => [
84
- make$1(m.m00, m.m10, m.m20),
85
- make$1(m.m01, m.m11, m.m21),
86
- make$1(m.m02, m.m12, m.m22)
87
- ];
88
- const rowVector = dual(2, (m, row) => toRows(m)[toThreeDimensionalIndex(row)]);
89
- const columnVector = dual(2, (m, column) => toColumns(m)[toThreeDimensionalIndex(column)]);
90
- const transpose = (m) => fromColumns(...toRows(m));
91
- const reverseRows = (m) => {
92
- const [v0, v1, v2] = toRows(m);
93
- return fromRows(v2, v1, v0);
94
- };
95
- const reverseColumns = (m) => {
96
- const [v0, v1, v2] = toColumns(m);
97
- return fromColumns(v2, v1, v0);
98
- };
99
-
100
- export { fromColumns as a, setColumn as b, minor as c, determinant as d, vectorProductRight as e, fromRows as f, solveSystem as g, toColumns as h, isMatrix3x3 as i, columnVector as j, transpose as k, reverseRows as l, make as m, reverseColumns as n, rowVector as r, setRow as s, toRows as t, vectorProductLeft as v };
101
- //# sourceMappingURL=curvy.lktriTpx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"curvy.lktriTpx.mjs","sources":["../../src/matrix/matrix3x3.internal.ts"],"sourcesContent":["import { toThreeDimensionalIndex } from '../dimensions'\nimport { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { invariant, round } from '../utils'\nimport type { Vector3 } from '../vector/vector3'\nimport * as vector3 from '../vector/vector3.internal'\nimport type { Matrix2x2 } from './matrix2x2'\nimport * as matrix2x2 from './matrix2x2.internal'\nimport type { Matrix3x3, Matrix3x3Coordinate } from './matrix3x3'\n\nexport const Matrix3x3TypeId: unique symbol = Symbol.for('curvy/matrix3x3')\nexport type Matrix3x3TypeId = typeof Matrix3x3TypeId\n\nclass Matrix3x3Impl extends Pipeable implements Matrix3x3 {\n readonly [Matrix3x3TypeId]: Matrix3x3TypeId = Matrix3x3TypeId\n\n readonly m00: number\n readonly m01: number\n readonly m02: number\n\n readonly m10: number\n readonly m11: number\n readonly m12: number\n\n readonly m20: number\n readonly m21: number\n readonly m22: number\n\n constructor(m00 = 0, m01 = 0, m02 = 0, m10 = 0, m11 = 0, m12 = 0, m20 = 0, m21 = 0, m22 = 0) {\n super()\n this.m00 = round(m00)\n this.m01 = round(m01)\n this.m02 = round(m02)\n this.m10 = round(m10)\n this.m11 = round(m11)\n this.m12 = round(m12)\n this.m20 = round(m20)\n this.m21 = round(m21)\n this.m22 = round(m22)\n }\n\n get [Symbol.toStringTag]() {\n return `Matrix3x3(${this.m00}, ${this.m01}, ${this.m02}, ${this.m10}, ${this.m11}, ${this.m12}, ${this.m20}, ${this.m21}, ${this.m22})`\n }\n\n get [Symbol.for('nodejs.util.inspect.custom')]() {\n return `Matrix3x3(${this.m00}, ${this.m01}, ${this.m02}, ${this.m10}, ${this.m11}, ${this.m12}, ${this.m20}, ${this.m21}, ${this.m22})`\n }\n\n [Symbol.hasInstance](m: unknown): m is Matrix3x3 {\n return isMatrix3x3(m)\n }\n}\n\nexport type { Matrix3x3 }\n\nexport const isMatrix3x3 = (m: unknown): m is Matrix3x3 =>\n typeof m === 'object' && m !== null && Matrix3x3TypeId in m\n\nexport const make = (\n m00 = 0,\n m01 = m00,\n m02 = m01,\n m10 = m02,\n m11 = m10,\n m12 = m11,\n m20 = m12,\n m21 = m20,\n m22 = m21,\n): Matrix3x3 => {\n return new Matrix3x3Impl(m00, m01, m02, m10, m11, m12, m20, m21, m22)\n}\n\nexport const fromRows = (v0: Vector3, v1: Vector3, v2: Vector3): Matrix3x3 =>\n new Matrix3x3Impl(v0.x, v0.y, v0.z, v1.x, v1.y, v1.z, v2.x, v2.y, v2.z)\n\nexport const fromColumns = (v0: Vector3, v1: Vector3, v2: Vector3): Matrix3x3 =>\n new Matrix3x3Impl(v0.x, v1.x, v2.x, v0.y, v1.y, v2.y, v0.z, v1.z, v2.z)\n\nexport const setRow = dual<\n (row: Matrix3x3Coordinate, v: Vector3) => (m: Matrix3x3) => Matrix3x3,\n (m: Matrix3x3, row: Matrix3x3Coordinate, v: Vector3) => Matrix3x3\n>(3, (m: Matrix3x3, row: Matrix3x3Coordinate, v: Vector3) =>\n fromRows(...(toRows(m).with(toThreeDimensionalIndex(row), v) as [Vector3, Vector3, Vector3])),\n)\n\nexport const setColumn = dual<\n (column: Matrix3x3Coordinate, v: Vector3) => (m: Matrix3x3) => Matrix3x3,\n (m: Matrix3x3, column: Matrix3x3Coordinate, v: Vector3) => Matrix3x3\n>(3, (m: Matrix3x3, column: Matrix3x3Coordinate, v: Vector3) =>\n fromColumns(\n ...(toColumns(m).with(toThreeDimensionalIndex(column), v) as [Vector3, Vector3, Vector3]),\n ),\n)\n\nexport const determinant = (m: Matrix3x3) =>\n round(\n m.m00 * matrix2x2.determinant(minor(m, 0, 0)) -\n m.m01 * matrix2x2.determinant(minor(m, 0, 1)) +\n m.m02 * matrix2x2.determinant(minor(m, 0, 2)),\n )\n\nexport const minor = dual<\n (row: Matrix3x3Coordinate, column: Matrix3x3Coordinate) => (m: Matrix3x3) => Matrix2x2,\n (m: Matrix3x3, row: Matrix3x3Coordinate, column: Matrix3x3Coordinate) => Matrix2x2\n>(3, (m: Matrix3x3, row: Matrix3x3Coordinate, column: Matrix3x3Coordinate) => {\n const [v0, v1] = toRows(m).toSpliced(toThreeDimensionalIndex(row), 1) as [Vector3, Vector3]\n const columnIndex = toThreeDimensionalIndex(column)\n const [m00, m01] = vector3.components(v0).toSpliced(columnIndex, 1) as [number, number]\n const [m10, m11] = vector3.components(v1).toSpliced(columnIndex, 1) as [number, number]\n\n return matrix2x2.make(m00, m01, m10, m11) as Matrix2x2\n})\n\nexport const vectorProductLeft = dual<\n (v: Vector3) => (m: Matrix3x3) => Vector3,\n (m: Matrix3x3, v: Vector3) => Vector3\n>(2, (m: Matrix3x3, v: Vector3) => {\n const [v0, v1, v2] = toRows(m) as [Vector3, Vector3, Vector3]\n return vector3.make(vector3.dot(v0, v), vector3.dot(v1, v), vector3.dot(v2, v))\n})\n\nexport const vectorProductRight = dual<\n (v: Vector3) => (m: Matrix3x3) => Vector3,\n (m: Matrix3x3, v: Vector3) => Vector3\n>(2, (m: Matrix3x3, v: Vector3) => {\n const [v0, v1, v2] = toColumns(m) as [Vector3, Vector3, Vector3]\n return vector3.make(vector3.dot(v, v0), vector3.dot(v, v1), vector3.dot(v, v2))\n})\n\nexport const solveSystem = dual<\n (v: Vector3) => (m: Matrix3x3) => Vector3,\n (m: Matrix3x3, v: Vector3) => Vector3\n>(2, (m: Matrix3x3, v: Vector3) => {\n const inverseDeterminant = 1 / determinant(m)\n\n invariant(\n Number.isFinite(inverseDeterminant),\n 'cannot solve system when coefficient matrix determinant is zero',\n )\n\n return vector3.make(\n determinant(setColumn(m, 0, v)) * inverseDeterminant,\n determinant(setColumn(m, 1, v)) * inverseDeterminant,\n determinant(setColumn(m, 2, v)) * inverseDeterminant,\n )\n})\n\nexport const toRows = (m: Matrix3x3): [Vector3, Vector3, Vector3] => [\n vector3.make(m.m00, m.m01, m.m02),\n vector3.make(m.m10, m.m11, m.m12),\n vector3.make(m.m20, m.m21, m.m22),\n]\n\nexport const toColumns = (m: Matrix3x3): [Vector3, Vector3, Vector3] => [\n vector3.make(m.m00, m.m10, m.m20),\n vector3.make(m.m01, m.m11, m.m21),\n vector3.make(m.m02, m.m12, m.m22),\n]\n\nexport const rowVector = dual<\n (row: Matrix3x3Coordinate) => (m: Matrix3x3) => Vector3,\n (m: Matrix3x3, row: Matrix3x3Coordinate) => Vector3\n>(2, (m: Matrix3x3, row: Matrix3x3Coordinate) => toRows(m)[toThreeDimensionalIndex(row)])\n\nexport const columnVector = dual<\n (column: Matrix3x3Coordinate) => (m: Matrix3x3) => Vector3,\n (m: Matrix3x3, column: Matrix3x3Coordinate) => Vector3\n>(2, (m: Matrix3x3, column: Matrix3x3Coordinate) => toColumns(m)[toThreeDimensionalIndex(column)])\n\nexport const transpose = (m: Matrix3x3) => fromColumns(...toRows(m))\n\nexport const reverseRows = (m: Matrix3x3) => {\n const [v0, v1, v2] = toRows(m)\n return fromRows(v2, v1, v0)\n}\n\nexport const reverseColumns = (m: Matrix3x3) => {\n const [v0, v1, v2] = toColumns(m)\n return fromColumns(v2, v1, v0)\n}\n"],"names":["matrix2x2.determinant","vector3.components","matrix2x2.make","vector3.make","vector3.dot"],"mappings":";;;;;AAAA,IAAA,EAAA;AAUa,MAAA,eAAA,GAAiC,MAAO,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAG1E,MAAM,sBAAsB,QAA8B,CAAA;AAAA,EAexD,YAAY,GAAM,GAAA,CAAA,EAAG,MAAM,CAAG,EAAA,GAAA,GAAM,GAAG,GAAM,GAAA,CAAA,EAAG,GAAM,GAAA,CAAA,EAAG,MAAM,CAAG,EAAA,GAAA,GAAM,GAAG,GAAM,GAAA,CAAA,EAAG,MAAM,CAAG,EAAA;AAC3F,IAAM,KAAA,EAAA;AAfR,IAAA,IAAA,CAAU,EAAoC,CAAA,GAAA,eAAA;AAgB5C,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AACpB,IAAK,IAAA,CAAA,GAAA,GAAM,MAAM,GAAG,CAAA;AAAA;AACtB,EAEA,MA3BU,EAAA,GAAA,eAAA,EA2BL,MAAO,CAAA,WAAA,EAAe,GAAA;AACzB,IAAO,OAAA,CAAA,UAAA,EAAa,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,KAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA;AAAA;AACtI,EAEA,KAAK,MAAA,CAAO,GAAI,CAAA,4BAA4B,CAAC,CAAI,GAAA;AAC/C,IAAO,OAAA,CAAA,UAAA,EAAa,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,KAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,EAAA,EAAK,IAAK,CAAA,GAAG,CAAK,EAAA,EAAA,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA;AAAA;AACtI,EAEA,CAAC,MAAA,CAAO,WAAW,CAAA,CAAE,CAA4B,EAAA;AAC/C,IAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAExB;AAIa,MAAA,WAAA,GAAc,CAAC,CAC1B,KAAA,OAAO,MAAM,QAAY,IAAA,CAAA,KAAM,QAAQ,eAAmB,IAAA;AAErD,MAAM,OAAO,CAClB,GAAA,GAAM,GACN,GAAM,GAAA,GAAA,EACN,MAAM,GACN,EAAA,GAAA,GAAM,KACN,GAAM,GAAA,GAAA,EACN,MAAM,GACN,EAAA,GAAA,GAAM,KACN,GAAM,GAAA,GAAA,EACN,MAAM,GACQ,KAAA;AACd,EAAO,OAAA,IAAI,aAAc,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,KAAK,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,GAAG,CAAA;AACtE;AAEa,MAAA,QAAA,GAAW,CAAC,EAAA,EAAa,EAAa,EAAA,EAAA,KACjD,IAAI,aAAc,CAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,GAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,CAAC;AAE3D,MAAA,WAAA,GAAc,CAAC,EAAA,EAAa,EAAa,EAAA,EAAA,KACpD,IAAI,aAAc,CAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,GAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,EAAA,CAAG,CAAG,EAAA,EAAA,CAAG,CAAC;AAEjE,MAAM,MAAS,GAAA,IAAA;AAAA,EAGpB,CAAA;AAAA,EAAG,CAAC,CAAA,EAAc,GAA0B,EAAA,CAAA,KAC5C,SAAS,GAAI,MAAA,CAAO,CAAC,CAAA,CAAE,IAAK,CAAA,uBAAA,CAAwB,GAAG,CAAA,EAAG,CAAC,CAAiC;AAC9F;AAEO,MAAM,SAAY,GAAA,IAAA;AAAA,EAGvB,CAAA;AAAA,EAAG,CAAC,CAAc,EAAA,MAAA,EAA6B,CAC/C,KAAA,WAAA;AAAA,IACE,GAAI,UAAU,CAAC,CAAA,CAAE,KAAK,uBAAwB,CAAA,MAAM,GAAG,CAAC;AAAA;AAE5D;AAEa,MAAA,WAAA,GAAc,CAAC,CAC1B,KAAA,KAAA;AAAA,EACE,CAAE,CAAA,GAAA,GAAMA,aAAU,CAAY,KAAM,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAA,GAC1C,CAAE,CAAA,GAAA,GAAMA,aAAU,CAAY,KAAM,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAA,GAC5C,CAAE,CAAA,GAAA,GAAMA,aAAU,CAAY,KAAM,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC;AAChD;AAEK,MAAM,QAAQ,IAGnB,CAAA,CAAA,EAAG,CAAC,CAAA,EAAc,KAA0B,MAAgC,KAAA;AAC5E,EAAM,MAAA,CAAC,EAAI,EAAA,EAAE,CAAI,GAAA,MAAA,CAAO,CAAC,CAAA,CAAE,SAAU,CAAA,uBAAA,CAAwB,GAAG,CAAA,EAAG,CAAC,CAAA;AACpE,EAAM,MAAA,WAAA,GAAc,wBAAwB,MAAM,CAAA;AAClD,EAAM,MAAA,CAAC,GAAK,EAAA,GAAG,CAAI,GAAAC,WAAmB,EAAE,CAAA,CAAE,SAAU,CAAA,WAAA,EAAa,CAAC,CAAA;AAClE,EAAM,MAAA,CAAC,GAAK,EAAA,GAAG,CAAI,GAAAA,WAAmB,EAAE,CAAA,CAAE,SAAU,CAAA,WAAA,EAAa,CAAC,CAAA;AAElE,EAAA,OAAOC,MAAU,CAAK,GAAK,EAAA,GAAA,EAAK,KAAK,GAAG,CAAA;AAC1C,CAAC;AAEM,MAAM,iBAAoB,GAAA,IAAA,CAG/B,CAAG,EAAA,CAAC,GAAc,CAAe,KAAA;AACjC,EAAA,MAAM,CAAC,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA,GAAI,OAAO,CAAC,CAAA;AAC7B,EAAA,OAAOC,MAAa,CAAAC,GAAY,CAAA,EAAA,EAAI,CAAC,CAAG,EAAAA,GAAY,CAAA,EAAA,EAAI,CAAC,CAAG,EAAAA,GAAY,CAAA,EAAA,EAAI,CAAC,CAAC,CAAA;AAChF,CAAC;AAEM,MAAM,kBAAqB,GAAA,IAAA,CAGhC,CAAG,EAAA,CAAC,GAAc,CAAe,KAAA;AACjC,EAAA,MAAM,CAAC,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA,GAAI,UAAU,CAAC,CAAA;AAChC,EAAA,OAAOD,MAAa,CAAAC,GAAY,CAAA,CAAA,EAAG,EAAE,CAAG,EAAAA,GAAY,CAAA,CAAA,EAAG,EAAE,CAAG,EAAAA,GAAY,CAAA,CAAA,EAAG,EAAE,CAAC,CAAA;AAChF,CAAC;AAEM,MAAM,WAAc,GAAA,IAAA,CAGzB,CAAG,EAAA,CAAC,GAAc,CAAe,KAAA;AACjC,EAAM,MAAA,kBAAA,GAAqB,CAAI,GAAA,WAAA,CAAY,CAAC,CAAA;AAE5C,EAAA,SAAA;AAAA,IACE,MAAA,CAAO,SAAS,kBAAkB,CAAA;AAAA,IAClC;AAAA,GACF;AAEA,EAAA,OAAOD,MAAQ;AAAA,IACb,YAAY,SAAU,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAI,GAAA,kBAAA;AAAA,IAClC,YAAY,SAAU,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAI,GAAA,kBAAA;AAAA,IAClC,YAAY,SAAU,CAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAI,GAAA;AAAA,GACpC;AACF,CAAC;AAEY,MAAA,MAAA,GAAS,CAAC,CAA8C,KAAA;AAAA,EACnEA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG,CAAA;AAAA,EAChCA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG,CAAA;AAAA,EAChCA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG;AAClC;AAEa,MAAA,SAAA,GAAY,CAAC,CAA8C,KAAA;AAAA,EACtEA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG,CAAA;AAAA,EAChCA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG,CAAA;AAAA,EAChCA,MAAa,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,GAAA,EAAK,EAAE,GAAG;AAClC;AAEO,MAAM,SAAY,GAAA,IAAA,CAGvB,CAAG,EAAA,CAAC,CAAc,EAAA,GAAA,KAA6B,MAAO,CAAA,CAAC,CAAE,CAAA,uBAAA,CAAwB,GAAG,CAAC,CAAC;AAEjF,MAAM,YAAe,GAAA,IAAA,CAG1B,CAAG,EAAA,CAAC,CAAc,EAAA,MAAA,KAAgC,SAAU,CAAA,CAAC,CAAE,CAAA,uBAAA,CAAwB,MAAM,CAAC,CAAC;AAE1F,MAAM,YAAY,CAAC,CAAA,KAAiB,YAAY,GAAG,MAAA,CAAO,CAAC,CAAC;AAEtD,MAAA,WAAA,GAAc,CAAC,CAAiB,KAAA;AAC3C,EAAA,MAAM,CAAC,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA,GAAI,OAAO,CAAC,CAAA;AAC7B,EAAO,OAAA,QAAA,CAAS,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AAC5B;AAEa,MAAA,cAAA,GAAiB,CAAC,CAAiB,KAAA;AAC9C,EAAA,MAAM,CAAC,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA,GAAI,UAAU,CAAC,CAAA;AAChC,EAAO,OAAA,WAAA,CAAY,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AAC/B;;;;"}
@@ -1,85 +0,0 @@
1
- import { Pipeable, dual } from '../pipe.mjs';
2
- import { round } from '../utils.mjs';
3
-
4
- var _a;
5
- const Vector3TypeId = Symbol.for("curvy/vector3");
6
- class Vector3Impl extends Pipeable {
7
- constructor(v0 = 0, v1 = 0, v2 = 0) {
8
- super();
9
- this[_a] = Vector3TypeId;
10
- this.x = round(v0);
11
- this.y = round(v1);
12
- this.z = round(v2);
13
- }
14
- get [0]() {
15
- return this.x;
16
- }
17
- get [1]() {
18
- return this.y;
19
- }
20
- get [2]() {
21
- return this.z;
22
- }
23
- get [(_a = Vector3TypeId, Symbol.toStringTag)]() {
24
- return `Vector3(${this.x}, ${this.y}, ${this.z})`;
25
- }
26
- get [Symbol.for("nodejs.util.inspect.custom")]() {
27
- return this[Symbol.toStringTag];
28
- }
29
- }
30
- const isVector3 = (v) => typeof v === "object" && v !== null && Vector3TypeId in v;
31
- const make = (v0, v1 = v0, v2 = v1) => new Vector3Impl(v0, v1, v2);
32
- const fromSpherical = (r, theta, phi) => new Vector3Impl(
33
- r * Math.sin(theta) * Math.cos(phi),
34
- r * Math.sin(theta) * Math.sin(phi),
35
- r * Math.cos(theta)
36
- );
37
- const magnitude = (vector) => round(Math.hypot(vector.x, vector.y, vector.z));
38
- const normalize = (vector) => {
39
- const m = magnitude(vector);
40
- return make(vector.x / m, vector.y / m, vector.z / m);
41
- };
42
- const dot = dual(
43
- 2,
44
- (a, b) => round(a.x * b.x + a.y * b.y + a.z * b.z)
45
- );
46
- const cross = dual(2, (a, b) => {
47
- const x = a.y * b.z - a.z * b.y;
48
- const y = a.z * b.x - a.x * b.z;
49
- const z = a.x * b.y - a.y * b.x;
50
- return make(x, y, z);
51
- });
52
- const components = (v) => [v.x, v.y, v.z];
53
- const softmax = (v) => {
54
- const max = Math.max(v.x, v.y, v.z);
55
- const v0 = Math.exp(v.x - max);
56
- const v1 = Math.exp(v.y - max);
57
- const v2 = Math.exp(v.z - max);
58
- const sum = v0 + v1 + v2;
59
- return make(v0 / sum, v1 / sum, v2 / sum);
60
- };
61
- const add = dual(2, (a, b) => make(a.x + b.x, a.y + b.y, a.z + b.z));
62
- const subtract = dual(2, (a, b) => make(a.x - b.x, a.y - b.y, a.z - b.z));
63
- const hadamard = dual(2, (a, b) => make(a.x * b.x, a.y * b.y, a.z * b.z));
64
- const scale = dual(2, (v, s) => s === 1 ? v : make(v.x * s, v.y * s, v.z * s));
65
- const getX = (v) => v.x;
66
- const setX = dual(2, (v, x) => make(x, v.y, v.z));
67
- const getY = (v) => v.y;
68
- const setY = dual(2, (v, y) => make(v.x, y, v.z));
69
- const getZ = (v) => v.z;
70
- const setZ = dual(2, (v, z) => make(v.x, v.y, z));
71
- const setR = dual(2, (v, r) => scale(r / magnitude(v))(v));
72
- const getTheta = (v) => Math.acos(v.z / magnitude(v));
73
- const setTheta = dual(2, (v, phi) => {
74
- const m = magnitude(v);
75
- const sinTheta = Math.sin(phi);
76
- return make(m * sinTheta * Math.cos(v.y), m * sinTheta * Math.sin(v.y), m * Math.cos(phi));
77
- });
78
- const getPhi = (v) => round(Math.atan2(v.y, v.x));
79
- const setPhi = dual(2, (v, theta) => {
80
- const m = magnitude(v);
81
- return make(m * Math.cos(theta), m * Math.sin(theta), v.z);
82
- });
83
-
84
- export { magnitude as a, components as b, cross as c, dot as d, add as e, fromSpherical as f, subtract as g, hadamard as h, isVector3 as i, scale as j, getX as k, setX as l, make as m, normalize as n, getY as o, setY as p, getZ as q, setZ as r, softmax as s, setR as t, getTheta as u, setTheta as v, getPhi as w, setPhi as x };
85
- //# sourceMappingURL=curvy.mLFprrGm.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"curvy.mLFprrGm.mjs","sources":["../../src/vector/vector3.internal.ts"],"sourcesContent":["import { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { round } from '../utils'\nimport type { Vector3 } from './vector3'\n\nexport const Vector3TypeId: unique symbol = Symbol.for('curvy/vector3')\nexport type Vector3TypeId = typeof Vector3TypeId\n\nclass Vector3Impl extends Pipeable implements Vector3 {\n readonly [Vector3TypeId]: Vector3TypeId = Vector3TypeId\n\n readonly x: number\n readonly y: number\n readonly z: number\n\n constructor(v0 = 0, v1 = 0, v2 = 0) {\n super()\n this.x = round(v0)\n this.y = round(v1)\n this.z = round(v2)\n }\n\n get [0]() {\n return this.x\n }\n\n get [1]() {\n return this.y\n }\n\n get [2]() {\n return this.z\n }\n\n get [Symbol.toStringTag]() {\n return `Vector3(${this.x}, ${this.y}, ${this.z})`\n }\n\n get [Symbol.for('nodejs.util.inspect.custom')]() {\n return this[Symbol.toStringTag]\n }\n}\n\nexport const isVector3 = (v: unknown): v is Vector3 =>\n typeof v === 'object' && v !== null && Vector3TypeId in v\n\nexport const make = (v0: number, v1 = v0, v2 = v1): Vector3 => new Vector3Impl(v0, v1, v2)\n\nexport const fromSpherical = (r: number, theta: number, phi: number) =>\n new Vector3Impl(\n r * Math.sin(theta) * Math.cos(phi),\n r * Math.sin(theta) * Math.sin(phi),\n r * Math.cos(theta),\n )\n\nexport const magnitude = (vector: Vector3) => round(Math.hypot(vector.x, vector.y, vector.z))\n\nexport const normalize = (vector: Vector3) => {\n const m = magnitude(vector)\n\n return make(vector.x / m, vector.y / m, vector.z / m)\n}\n\nexport const dot = dual<(b: Vector3) => (a: Vector3) => number, (a: Vector3, b: Vector3) => number>(\n 2,\n (a: Vector3, b: Vector3) => round(a.x * b.x + a.y * b.y + a.z * b.z),\n)\n\nexport const cross = dual<\n (b: Vector3) => (a: Vector3) => Vector3,\n (a: Vector3, b: Vector3) => Vector3\n>(2, (a: Vector3, b: Vector3) => {\n const x = a.y * b.z - a.z * b.y\n const y = a.z * b.x - a.x * b.z\n const z = a.x * b.y - a.y * b.x\n\n return make(x, y, z)\n})\n\nexport const components: (v: Vector3) => [number, number, number] = (v: Vector3) => [v.x, v.y, v.z]\n\nexport const softmax = (v: Vector3) => {\n const max = Math.max(v.x, v.y, v.z)\n\n const v0 = Math.exp(v.x - max)\n const v1 = Math.exp(v.y - max)\n const v2 = Math.exp(v.z - max)\n\n const sum = v0 + v1 + v2\n\n return make(v0 / sum, v1 / sum, v2 / sum)\n}\n\nexport const add = dual<\n (b: Vector3) => (a: Vector3) => Vector3,\n (a: Vector3, b: Vector3) => Vector3\n>(2, (a: Vector3, b: Vector3) => make(a.x + b.x, a.y + b.y, a.z + b.z))\n\nexport const subtract = dual<\n (b: Vector3) => (a: Vector3) => Vector3,\n (a: Vector3, b: Vector3) => Vector3\n>(2, (a: Vector3, b: Vector3) => make(a.x - b.x, a.y - b.y, a.z - b.z))\n\nexport const hadamard = dual<\n (b: Vector3) => (a: Vector3) => Vector3,\n (a: Vector3, b: Vector3) => Vector3\n>(2, (a: Vector3, b: Vector3) => make(a.x * b.x, a.y * b.y, a.z * b.z))\n\nexport const scale = dual<\n (s: number) => (v: Vector3) => Vector3,\n (v: Vector3, s: number) => Vector3\n>(2, (v: Vector3, s: number) => (s === 1 ? v : make(v.x * s, v.y * s, v.z * s)))\n\nexport const getX: (v: Vector3) => number = (v: Vector3) => v.x\nexport const setX = dual<\n (x: number) => (v: Vector3) => Vector3,\n (v: Vector3, x: number) => Vector3\n>(2, (v: Vector3, x: number) => make(x, v.y, v.z))\n\nexport const getY: (v: Vector3) => number = (v: Vector3) => v.y\nexport const setY = dual<\n (y: number) => (v: Vector3) => Vector3,\n (v: Vector3, y: number) => Vector3\n>(2, (v: Vector3, y: number) => make(v.x, y, v.z))\n\nexport const getZ: (v: Vector3) => number = (v: Vector3) => v.z\nexport const setZ = dual<\n (z: number) => (v: Vector3) => Vector3,\n (v: Vector3, z: number) => Vector3\n>(2, (v: Vector3, z: number) => make(v.x, v.y, z))\n\nexport const setR = dual<\n (r: number) => (v: Vector3) => Vector3,\n (v: Vector3, r: number) => Vector3\n>(2, (v: Vector3, r: number) => scale(r / magnitude(v))(v))\n\nexport const getTheta = (v: Vector3) => Math.acos(v.z / magnitude(v))\nexport const setTheta = dual<\n (phi: number) => (v: Vector3) => Vector3,\n (v: Vector3, phi: number) => Vector3\n>(2, (v: Vector3, phi: number) => {\n const m = magnitude(v)\n const sinTheta = Math.sin(phi)\n return make(m * sinTheta * Math.cos(v.y), m * sinTheta * Math.sin(v.y), m * Math.cos(phi))\n})\n\nexport const getPhi = (v: Vector3) => round(Math.atan2(v.y, v.x))\nexport const setPhi = dual<\n (theta: number) => (v: Vector3) => Vector3,\n (v: Vector3, theta: number) => Vector3\n>(2, (v: Vector3, theta: number) => {\n const m = magnitude(v)\n return make(m * Math.cos(theta), m * Math.sin(theta), v.z)\n})\n"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { make as make$1, size } from '../interval.mjs';
2
- import { Pipeable, dual } from '../pipe.mjs';
3
- import { round } from '../utils.mjs';
4
-
5
- var _a$1, _b$1;
6
- const QuadraticPolynomialTypeId = Symbol.for("curvy/polynomial/quadratic");
7
- class QuadraticPolynomialImpl extends (_b$1 = Pipeable, _a$1 = QuadraticPolynomialTypeId, _b$1) {
8
- constructor(c0 = 0, c1 = 0, c2 = 0) {
9
- super();
10
- this[_a$1] = QuadraticPolynomialTypeId;
11
- this.c0 = round(c0);
12
- this.c1 = round(c1);
13
- this.c2 = round(c2);
14
- }
15
- }
16
-
17
- var _a, _b;
18
- const LinearPolynomialTypeId = Symbol.for("curvy/linear");
19
- class LinearPolynomialImpl extends (_b = Pipeable, _a = LinearPolynomialTypeId, _b) {
20
- constructor(c0 = 0, c1 = 0) {
21
- super();
22
- this[_a] = LinearPolynomialTypeId;
23
- this.c0 = round(c0);
24
- this.c1 = round(c1);
25
- }
26
- }
27
- const isLinearPolynomial = (v) => typeof v === "object" && v !== null && LinearPolynomialTypeId in v;
28
- const make = (c0 = 0, c1 = 0) => new LinearPolynomialImpl(c0, c1);
29
- const fromVector = (v) => new LinearPolynomialImpl(v.x, v.y);
30
- const fromPointSlope = (p, slope) => new LinearPolynomialImpl(p.y - slope * p.x, slope);
31
- const fromPoints = (p1, p2) => fromPointSlope(p1, (p2.y - p1.y) / (p2.x - p1.x));
32
- const solve = dual(2, (p, x) => round(p.c0 + x * p.c1));
33
- const toSolver = (p) => (x) => solve(p, x);
34
- const solveInverse = dual(2, (p, y) => {
35
- if (p.c1 === 0) {
36
- return null;
37
- }
38
- return round((y - p.c0) / p.c1);
39
- });
40
- const toInverseSolver = (p) => (y) => solveInverse(p, y);
41
- const monotonicity = (p) => p.c1 === 0 ? "constant" : p.c1 > 0 ? "increasing" : "decreasing";
42
- const derivative = (p) => p.c1;
43
- const antiderivative = dual(
44
- (args) => isLinearPolynomial(args[0]),
45
- (p, integrationConstant = 0) => new QuadraticPolynomialImpl(integrationConstant, p.c0, p.c1 / 2)
46
- );
47
- const domain = dual(2, (p, range2) => {
48
- if (p.c1 === 0) {
49
- if (range2.start === p.c0 && range2.end === p.c0) {
50
- return make$1(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY);
51
- }
52
- return null;
53
- }
54
- const start = solveInverse(p, range2.start);
55
- const end = solveInverse(p, range2.end);
56
- if (start === null || end === null) {
57
- return null;
58
- }
59
- return make$1(start, end);
60
- });
61
- const range = dual(
62
- 2,
63
- (p, domain2) => make$1(solve(p, domain2.start), solve(p, domain2.end))
64
- );
65
- const length = dual(2, (p, domain2) => {
66
- if (size(domain2) === 0) {
67
- return 0;
68
- }
69
- if (p.c1 === 0) {
70
- return round(size(domain2));
71
- }
72
- return round(Math.sqrt(1 + p.c1 ** 2) * size(domain2));
73
- });
74
-
75
- export { QuadraticPolynomialImpl as Q, make as a, QuadraticPolynomialTypeId as b, solveInverse as c, fromPointSlope as d, fromPoints as e, fromVector as f, toInverseSolver as g, derivative as h, isLinearPolynomial as i, antiderivative as j, domain as k, length as l, monotonicity as m, range as r, solve as s, toSolver as t };
76
- //# sourceMappingURL=curvy.r6f1j287.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"curvy.r6f1j287.mjs","sources":["../../src/polynomial/quadratic.internal.circular.ts","../../src/polynomial/linear.internal.ts"],"sourcesContent":["import { Pipeable } from '../pipe'\nimport { round } from '../utils'\nimport type { QuadraticPolynomial } from './quadratic'\n\nexport const QuadraticPolynomialTypeId: unique symbol = Symbol.for('curvy/polynomial/quadratic')\nexport type QuadraticPolynomialTypeId = typeof QuadraticPolynomialTypeId\n\nexport class QuadraticPolynomialImpl extends Pipeable implements QuadraticPolynomial {\n readonly [QuadraticPolynomialTypeId]: QuadraticPolynomialTypeId = QuadraticPolynomialTypeId\n\n readonly c0: number\n readonly c1: number\n readonly c2: number\n\n constructor(c0 = 0, c1 = 0, c2 = 0) {\n super()\n\n this.c0 = round(c0)\n this.c1 = round(c1)\n this.c2 = round(c2)\n }\n}\n","import * as Interval from '../interval'\nimport { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { round } from '../utils'\nimport type { Vector2 } from '../vector/vector2'\nimport type { LinearPolynomial } from './linear'\nimport type { QuadraticPolynomial } from './quadratic'\nimport { QuadraticPolynomialImpl } from './quadratic.internal.circular'\nimport type { ZeroOrOne } from './types'\n\nexport const LinearPolynomialTypeId: unique symbol = Symbol.for('curvy/linear')\nexport type LinearPolynomialTypeId = typeof LinearPolynomialTypeId\n\nclass LinearPolynomialImpl extends Pipeable implements LinearPolynomial {\n readonly [LinearPolynomialTypeId]: LinearPolynomialTypeId = LinearPolynomialTypeId\n\n readonly c0: number\n readonly c1: number\n\n constructor(c0 = 0, c1 = 0) {\n super()\n\n this.c0 = round(c0)\n this.c1 = round(c1)\n }\n}\n\nexport const isLinearPolynomial = (v: unknown): v is LinearPolynomial =>\n typeof v === 'object' && v !== null && LinearPolynomialTypeId in v\n\nexport const make = (c0 = 0, c1 = 0): LinearPolynomial => new LinearPolynomialImpl(c0, c1)\n\nexport const fromVector = (v: Vector2) => new LinearPolynomialImpl(v.x, v.y)\n\nexport const fromPointSlope = (p: Vector2, slope: number) =>\n new LinearPolynomialImpl(p.y - slope * p.x, slope)\n\nexport const fromPoints = (p1: Vector2, p2: Vector2) =>\n fromPointSlope(p1, (p2.y - p1.y) / (p2.x - p1.x))\n\nexport const solve = dual<\n (x: number) => (p: LinearPolynomial) => number,\n (p: LinearPolynomial, x: number) => number\n>(2, (p: LinearPolynomial, x: number) => round(p.c0 + x * p.c1))\n\nexport const toSolver = (p: LinearPolynomial) => (x: number) => solve(p, x)\n\nexport const solveInverse = dual<\n (y: number) => (p: LinearPolynomial) => ZeroOrOne,\n (p: LinearPolynomial, y: number) => ZeroOrOne\n>(2, (p: LinearPolynomial, y: number) => {\n if (p.c1 === 0) {\n return null\n }\n return round((y - p.c0) / p.c1)\n})\n\nexport const toInverseSolver = (p: LinearPolynomial) => (y: number) => solveInverse(p, y)\n\nexport const monotonicity = (p: LinearPolynomial) =>\n p.c1 === 0 ? 'constant' : p.c1 > 0 ? 'increasing' : 'decreasing'\n\nexport const derivative = (p: LinearPolynomial) => p.c1\n\nexport const antiderivative = dual<\n (integrationConstant: number) => (p: LinearPolynomial) => QuadraticPolynomial,\n (p: LinearPolynomial, integrationConstant?: number) => QuadraticPolynomial\n>(\n (args) => isLinearPolynomial(args[0]),\n (p: LinearPolynomial, integrationConstant = 0) =>\n new QuadraticPolynomialImpl(integrationConstant, p.c0, p.c1 / 2),\n)\n\nexport const domain = dual<\n (range: Interval.Interval) => (p: LinearPolynomial) => ZeroOrOne<Interval.Interval>,\n (p: LinearPolynomial, range: Interval.Interval) => ZeroOrOne<Interval.Interval>\n>(2, (p: LinearPolynomial, range: Interval.Interval) => {\n if (p.c1 === 0) {\n if (range.start === p.c0 && range.end === p.c0) {\n return Interval.make(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY)\n }\n return null\n }\n\n const start = solveInverse(p, range.start)\n const end = solveInverse(p, range.end)\n\n if (start === null || end === null) {\n return null\n }\n\n return Interval.make(start, end)\n})\n\nexport const range = dual<\n (domain: Interval.Interval) => (p: LinearPolynomial) => Interval.Interval,\n (p: LinearPolynomial, domain: Interval.Interval) => Interval.Interval\n>(2, (p: LinearPolynomial, domain: Interval.Interval) =>\n Interval.make(solve(p, domain.start), solve(p, domain.end)),\n)\n\nexport const length = dual<\n (domain: Interval.Interval) => (p: LinearPolynomial) => number,\n (p: LinearPolynomial, domain: Interval.Interval) => number\n>(2, (p: LinearPolynomial, domain: Interval.Interval) => {\n if (Interval.size(domain) === 0) {\n return 0\n }\n\n if (p.c1 === 0) {\n return round(Interval.size(domain))\n }\n\n return round(Math.sqrt(1 + p.c1 ** 2) * Interval.size(domain))\n})\n"],"names":["_a","_b","range","Interval.make","domain","Interval.size"],"mappings":"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"}
@@ -1,130 +0,0 @@
1
- import { Matrix4x4 } from '../matrix/matrix4x4.mjs';
2
- import { CubicPath2d } from '../path/cubic2d.mjs';
3
- import { Pipeable } from '../pipe.mjs';
4
- import { Vector2 } from '../vector/vector2.mjs';
5
- import { Bezier2d } from './bezier2d.mjs';
6
- import '../shared/curvy.Bf5TIk31.mjs';
7
- import '../vector/vector4.mjs';
8
- import '../matrix/matrix3x3.mjs';
9
- import '../vector/vector3.mjs';
10
- import '../matrix/matrix2x2.mjs';
11
- import '../curve/cubic2d.mjs';
12
- import '../interval.mjs';
13
- import '../shared/curvy.FDaj5rlj.mjs';
14
-
15
- declare const Basis2dTypeId: unique symbol;
16
- type Basis2dTypeId = typeof Basis2dTypeId;
17
-
18
- /**
19
- * Characteristic matrix of a Basis Spline.
20
- *
21
- * The characteristic matrix is a 4x4 matrix that defines the shape of the spline.
22
- *
23
- * @since 1.0.0
24
- */
25
- declare const characteristic: Matrix4x4;
26
- /**
27
- * A Basis Spline in 2D space.
28
- *
29
- * All fields are readonly and immutable, and all operations create new instances.
30
- *
31
- * @since 1.0.0
32
- */
33
- interface Basis2d extends Pipeable {
34
- readonly [Basis2dTypeId]: Basis2dTypeId;
35
- [Symbol.iterator](): Iterator<Vector2>;
36
- }
37
- /**
38
- * Checks if a value is a `Basis2d`.
39
- *
40
- * @param p - The value to check.
41
- * @returns `true` if the value is a `Basis2d`, `false` otherwise.
42
- * @since 1.0.0
43
- */
44
- declare const isBasis2d: (p: unknown) => p is Basis2d;
45
- /**
46
- * Creates a new `Basis2d` instance.
47
- *
48
- * @param p0 - The first control point.
49
- * @param p1 - The second control point.
50
- * @param p2 - The third control point.
51
- * @param p3 - The fourth control point.
52
- * @returns A new `Basis2d` instance.
53
- * @since 1.0.0
54
- */
55
- declare const make: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) => Basis2d;
56
- /**
57
- * Creates a new `Basis2d` instance from an array of control points.
58
- *
59
- * @param points - The control points.
60
- * @returns A new `Basis2d` instance.
61
- * @since 1.0.0
62
- */
63
- declare const fromArray: (points: ReadonlyArray<Vector2>) => Basis2d;
64
- declare const append: {
65
- /**
66
- * Appends control points to a `Basis2d`.
67
- *
68
- * @param points - The control points to append.
69
- * @returns A function that takes a `Basis2d` and returns a new `Basis2d` instance with the appended control points.
70
- * @since 1.0.0
71
- */
72
- (...points: ReadonlyArray<Vector2>): (p: Basis2d) => Basis2d;
73
- /**
74
- * Appends control points to a `Basis2d`.
75
- *
76
- * @param p - The `Basis2d` to append the control points to.
77
- * @param points - The control points to append.
78
- * @returns A new `Basis2d` instance with the appended control points.
79
- * @since 1.0.0
80
- */
81
- (p: Basis2d, ...points: ReadonlyArray<Vector2>): Basis2d;
82
- };
83
- declare const prepend: {
84
- /**
85
- * Prepends control points to a `Basis2d`.
86
- *
87
- * @param points - The control points to prepend.
88
- * @returns A function that takes a `Basis2d` and returns a new `Basis2d` instance with the prepended control points.
89
- * @since 1.0.0
90
- */
91
- (...points: ReadonlyArray<Vector2>): (p: Basis2d) => Basis2d;
92
- /**
93
- * Prepends control points to a `Basis2d`.
94
- *
95
- * @param p - The `Basis2d` to prepend the control points to.
96
- * @param points - The control points to prepend.
97
- * @returns A new `Basis2d` instance with the prepended control points.
98
- * @since 1.0.0
99
- */
100
- (p: Basis2d, ...points: ReadonlyArray<Vector2>): Basis2d;
101
- };
102
- /**
103
- * Triplicates the endpoints of a `Basis2d`.
104
- *
105
- * This is useful for creating a closed loop spline.
106
- *
107
- * @param p - The `Basis2d` to triplicate the endpoints of.
108
- * @returns A new `Basis2d` instance with the triplicated endpoints.
109
- * @since 1.0.0
110
- */
111
- declare const withTriplicatedEndpoints: (p: Basis2d) => Basis2d;
112
- /**
113
- * Creates a new `Path2d` from a `Basis2d`.
114
- *
115
- * @param p - The `Basis2d` to convert to a `Path2d`.
116
- * @returns A new `Path2d` instance.
117
- * @since 1.0.0
118
- */
119
- declare const toPath: (p: Basis2d) => CubicPath2d;
120
- /**
121
- * Converts a `Basis2d` to a `Bezier2d`.
122
- *
123
- * @param p - The `Basis2d` to convert.
124
- * @returns A new `Bezier2d` instance.
125
- * @since 1.0.0
126
- */
127
- declare const toBezier: (p: Basis2d) => Bezier2d;
128
-
129
- export { append, characteristic, fromArray, isBasis2d, make, prepend, toBezier, toPath, withTriplicatedEndpoints };
130
- export type { Basis2d };
@@ -1,130 +0,0 @@
1
- import { Matrix4x4 } from '../matrix/matrix4x4.js';
2
- import { CubicPath2d } from '../path/cubic2d.js';
3
- import { Pipeable } from '../pipe.js';
4
- import { Vector2 } from '../vector/vector2.js';
5
- import { Bezier2d } from './bezier2d.js';
6
- import '../shared/curvy.Bf5TIk31.js';
7
- import '../vector/vector4.js';
8
- import '../matrix/matrix3x3.js';
9
- import '../vector/vector3.js';
10
- import '../matrix/matrix2x2.js';
11
- import '../curve/cubic2d.js';
12
- import '../interval.js';
13
- import '../shared/curvy.Cg8lZVUz.js';
14
-
15
- declare const Basis2dTypeId: unique symbol;
16
- type Basis2dTypeId = typeof Basis2dTypeId;
17
-
18
- /**
19
- * Characteristic matrix of a Basis Spline.
20
- *
21
- * The characteristic matrix is a 4x4 matrix that defines the shape of the spline.
22
- *
23
- * @since 1.0.0
24
- */
25
- declare const characteristic: Matrix4x4;
26
- /**
27
- * A Basis Spline in 2D space.
28
- *
29
- * All fields are readonly and immutable, and all operations create new instances.
30
- *
31
- * @since 1.0.0
32
- */
33
- interface Basis2d extends Pipeable {
34
- readonly [Basis2dTypeId]: Basis2dTypeId;
35
- [Symbol.iterator](): Iterator<Vector2>;
36
- }
37
- /**
38
- * Checks if a value is a `Basis2d`.
39
- *
40
- * @param p - The value to check.
41
- * @returns `true` if the value is a `Basis2d`, `false` otherwise.
42
- * @since 1.0.0
43
- */
44
- declare const isBasis2d: (p: unknown) => p is Basis2d;
45
- /**
46
- * Creates a new `Basis2d` instance.
47
- *
48
- * @param p0 - The first control point.
49
- * @param p1 - The second control point.
50
- * @param p2 - The third control point.
51
- * @param p3 - The fourth control point.
52
- * @returns A new `Basis2d` instance.
53
- * @since 1.0.0
54
- */
55
- declare const make: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) => Basis2d;
56
- /**
57
- * Creates a new `Basis2d` instance from an array of control points.
58
- *
59
- * @param points - The control points.
60
- * @returns A new `Basis2d` instance.
61
- * @since 1.0.0
62
- */
63
- declare const fromArray: (points: ReadonlyArray<Vector2>) => Basis2d;
64
- declare const append: {
65
- /**
66
- * Appends control points to a `Basis2d`.
67
- *
68
- * @param points - The control points to append.
69
- * @returns A function that takes a `Basis2d` and returns a new `Basis2d` instance with the appended control points.
70
- * @since 1.0.0
71
- */
72
- (...points: ReadonlyArray<Vector2>): (p: Basis2d) => Basis2d;
73
- /**
74
- * Appends control points to a `Basis2d`.
75
- *
76
- * @param p - The `Basis2d` to append the control points to.
77
- * @param points - The control points to append.
78
- * @returns A new `Basis2d` instance with the appended control points.
79
- * @since 1.0.0
80
- */
81
- (p: Basis2d, ...points: ReadonlyArray<Vector2>): Basis2d;
82
- };
83
- declare const prepend: {
84
- /**
85
- * Prepends control points to a `Basis2d`.
86
- *
87
- * @param points - The control points to prepend.
88
- * @returns A function that takes a `Basis2d` and returns a new `Basis2d` instance with the prepended control points.
89
- * @since 1.0.0
90
- */
91
- (...points: ReadonlyArray<Vector2>): (p: Basis2d) => Basis2d;
92
- /**
93
- * Prepends control points to a `Basis2d`.
94
- *
95
- * @param p - The `Basis2d` to prepend the control points to.
96
- * @param points - The control points to prepend.
97
- * @returns A new `Basis2d` instance with the prepended control points.
98
- * @since 1.0.0
99
- */
100
- (p: Basis2d, ...points: ReadonlyArray<Vector2>): Basis2d;
101
- };
102
- /**
103
- * Triplicates the endpoints of a `Basis2d`.
104
- *
105
- * This is useful for creating a closed loop spline.
106
- *
107
- * @param p - The `Basis2d` to triplicate the endpoints of.
108
- * @returns A new `Basis2d` instance with the triplicated endpoints.
109
- * @since 1.0.0
110
- */
111
- declare const withTriplicatedEndpoints: (p: Basis2d) => Basis2d;
112
- /**
113
- * Creates a new `Path2d` from a `Basis2d`.
114
- *
115
- * @param p - The `Basis2d` to convert to a `Path2d`.
116
- * @returns A new `Path2d` instance.
117
- * @since 1.0.0
118
- */
119
- declare const toPath: (p: Basis2d) => CubicPath2d;
120
- /**
121
- * Converts a `Basis2d` to a `Bezier2d`.
122
- *
123
- * @param p - The `Basis2d` to convert.
124
- * @returns A new `Bezier2d` instance.
125
- * @since 1.0.0
126
- */
127
- declare const toBezier: (p: Basis2d) => Bezier2d;
128
-
129
- export { append, characteristic, fromArray, isBasis2d, make, prepend, toBezier, toPath, withTriplicatedEndpoints };
130
- export type { Basis2d };